服务端返回req报错: Converting circular structure to JSON--> starting at object with construct ‘Socket‘

TypeError: Converting circular structure to JSON
–> starting at object with constructor ‘Socket’
| property ‘parser’ -> object with constructor ‘HTTPParser’
— property ‘socket’ closes the circle

#在使用express搭建一个简易服务器时,测试接口发现get能过,并且能成功返回req.params等来查看响应,但是post返回不了req,但是却能返回req.body…
后来查资料,捋了一下思路,发现get也不能直接返回req,(这里我理解为防止返回的请求再次发送到后端,导致出现‘无限套娃’。
这里有以下几种解决办法来查看请求:

  1. 返回更具体的数据,例如req.params,req.query…
  2. 在服务端查看req,可以使用consolel.og()等
  3. 安装模块:npm i circular-json,再导入var circularJson = require('circular-json');最后用circularJson.stringify包装一下:
    app.post('/', urlencodedParser,function(req, res){ console.log(' pots req',req.body); res.send(circularJSON.stringify(req)); })
    有什么问题还请留言哈,下期见!!!
  • 7
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
要使`create_task`函数能够响应正常请求和错误,并返回不同的结构体,你可以使用Rust中的`Result`类型和`Result`宏。 首先,你需要定义两个结构体,一个用于表示正常响应的数据,另一个用于表示错误响应的数据。例如: ```rust #[derive(Serialize)] struct SuccessResponse { // 正常响应的数据结构 } #[derive(Serialize)] struct ErrorResponse { // 错误响应的数据结构 } ``` 接下来,你可以修改`create_task`函数的框架,以便能够处理正常请求和错误,并返回不同的结构体。可以使用`Result`宏来捕获可能的错误,并根据结果返回相应的结构体。例如: ```rust pub async fn create_task( req: web::Json<PostTaskReq>, config: web::Data<JudgeConfig>, ) -> impl Responder { // 处理请求逻辑... let result = do_something(req, config).await; match result { Ok(data) => HttpResponse::Ok().json(SuccessResponse { /* 构造正常响应的数据 */ }), Err(error) => HttpResponse::InternalServerError().json(ErrorResponse { /* 构造错误响应的数据 */ }), } } ``` 在上面的示例中,`do_something`是处理请求逻辑的函数,它返回一个`Result`类型。根据`Result`的结果,我们可以使用`match`语句来决定返回哪种类型的响应。 当结果是`Ok`时,我们构造一个`SuccessResponse`结构体,并使用`HttpResponse::Ok().json(...)`来返回正常的HTTP响应。 当结果是`Err`时,我们构造一个`ErrorResponse`结构体,并使用`HttpResponse::InternalServerError().json(...)`来返回错误的HTTP响应。 希望这可以帮助你修改`create_task`函数的框架,使其能够响应正常请求和错误,并返回不同的结构体!如果还有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值