typescript - 状态码必须是数字 POST 请求错误 tsoa typescrpt
问题描述
我正在试验tsoa
休息 API。但我总是收到以下post
请求错误。
AssertionError [ERR_ASSERTION]: status code must be a number
at Object.set status [as status] (PROJECT_PATH/node_modules/koa/lib/response.js:87:5)
at Object.status (PROJECT_PATH/node_modules/delegates/index.js:92:31)
at Object.<anonymous> (PROJECT_PATH/src/rest/routes.ts:93:31)
at Generator.next (<anonymous>)
at PROJECT_PATH/src/rest/routes.ts:8:71
at new Promise (<anonymous>)
at __awaiter (PROJECT_PATH/src/rest/routes.ts:4:12)
at RegisterRoutes.router.post (PROJECT_PATH/src/rest/routes.ts:84:43)
at dispatch (PROJECT_PATH/node_modules/koa-compose/index.js:42:32)
at PROJECT_PATH/node_modules/koa-router/lib/router.js:353:16
示例代码如下
@Post()
public async createUser(@BodyProp() requestBody: UserInput): Promise<void> {
console.log(requestBody)
// code
this.setStatus(201);
return Promise.resolve();
}
在我的tsoa.json
配置中,我添加了"middleware": "koa",
因为我使用kao
.
解决方案
我最近遇到了同样的错误。我设法通过添加koa-bodyparser中间件来修复它。它确保将 http 正文添加到 koactx.request
对象。
tsoa
我在文档中找不到任何提及这一点。
示例代码:
@Post('')
public async handleRequest (
@Request() req: Request,
@BodyProp('param_1') param1: number
): Promise<void> {
// These will all print out the http body
console.log(param1)
console.log(req.body)
console.log(req.ctx.request.body)
}
推荐阅读
- postgresql - 如何使用 Golang lib/pq API 将二进制数据插入 PostgreSQL BYTEA 列?
- android - 用高程完成两个面板布局的最有效方法是什么?
- windows - 从“Matlab”调用时,如何在成功分析提交的作业后退出“abaqus”命令窗口到“Matlab”脚本
- tensorflow - tf.keras.layers 中的转置卷积
- matlab - Matlab:ode15i 求解器引发尺寸错误,我看不到在哪里
- c - 无法在代码中找到错误的原因
- asp.net-core - 如何以编程方式将目录角色分配给 Azure AD 中的用户
- sql-server - 如何基于其他列 SQL Server 2012 创建列
- sql - Sql 查询 - 我在一个表中有三列,我需要将每列数据检查到另一个表中
- sass - 更新到 Gulp 4.0 时出现 AssertionError