使用 PUT 方法主体时不使用 Koa 传递
When using PUT method body is not passed using Koa
我正在尝试制作更新功能,用户可以在其中放置新数据并且服务器中的数据会得到更新,这是一项简单的任务,但是,当我尝试放置新数据时,正文总是未定义.
发送的数据:
request: {
method: 'PUT',
url: '/api/v1.0/articles/1',
header: {
'user-agent': 'PostmanRuntime/7.17.1',
accept: '*/*',
'cache-control': 'no-cache',
host: 'localhost:3000',
'accept-encoding': 'gzip, deflate',
'content-length': '98',
connection: 'keep-alive'
}
},
response: {
status: 404,
message: 'Not Found',
header: [Object: null prototype] {}
},
现在我尝试使用其他方法而不是 RAW 方法将其作为键传递,这就是我要传递的主体内部的内容:
{
"title": "another article",
"fullText": "again here is some text hereto fill the body"
}
这是应该更新数据的函数,但它在放置请求中未定义。
router.put("/:id", updateArticle);
function updateArticle(cnx, next) {
let id = parseInt(cnx.params.id);
console.log(cnx);
if (articles[id - 1] != null) {
//articles[id - 1].title = cnx.request.body.title;
cnx.body = {
message:
"Updated Successfully: \n:" + JSON.stringify(updateArticle, null, 4)
};
} else {
cnx.body = {
message:
"Article does not exist: \n:" + JSON.stringify(updateArticle, null, 4)
};
}
}
我正在使用邮递员,Body -> Raw | JSON,我不得不提到所有其他方法都非常有效 - delete、create、getAll、getById
使用 PUT 或 POST,数据位于请求的正文中。您必须有一些代码(在您的请求处理程序或某些中间件中)实际从流中读取主体并为您填充 body
属性。如果没有,则数据仍位于请求流中等待读取。
您可以在此处查看自己阅读的示例:https://github.com/koajs/koa/issues/719 或者有预构建的中间件可以为您完成。
这里有几个模块可以为您完成该中间件:
我正在尝试制作更新功能,用户可以在其中放置新数据并且服务器中的数据会得到更新,这是一项简单的任务,但是,当我尝试放置新数据时,正文总是未定义.
发送的数据:
request: {
method: 'PUT',
url: '/api/v1.0/articles/1',
header: {
'user-agent': 'PostmanRuntime/7.17.1',
accept: '*/*',
'cache-control': 'no-cache',
host: 'localhost:3000',
'accept-encoding': 'gzip, deflate',
'content-length': '98',
connection: 'keep-alive'
}
},
response: {
status: 404,
message: 'Not Found',
header: [Object: null prototype] {}
},
现在我尝试使用其他方法而不是 RAW 方法将其作为键传递,这就是我要传递的主体内部的内容:
{
"title": "another article",
"fullText": "again here is some text hereto fill the body"
}
这是应该更新数据的函数,但它在放置请求中未定义。
router.put("/:id", updateArticle);
function updateArticle(cnx, next) {
let id = parseInt(cnx.params.id);
console.log(cnx);
if (articles[id - 1] != null) {
//articles[id - 1].title = cnx.request.body.title;
cnx.body = {
message:
"Updated Successfully: \n:" + JSON.stringify(updateArticle, null, 4)
};
} else {
cnx.body = {
message:
"Article does not exist: \n:" + JSON.stringify(updateArticle, null, 4)
};
}
}
我正在使用邮递员,Body -> Raw | JSON,我不得不提到所有其他方法都非常有效 - delete、create、getAll、getById
使用 PUT 或 POST,数据位于请求的正文中。您必须有一些代码(在您的请求处理程序或某些中间件中)实际从流中读取主体并为您填充 body
属性。如果没有,则数据仍位于请求流中等待读取。
您可以在此处查看自己阅读的示例:https://github.com/koajs/koa/issues/719 或者有预构建的中间件可以为您完成。
这里有几个模块可以为您完成该中间件: