node.js - Howto Koa 路由器 PUT 做得对
问题描述
[因为 koa-router 维护者想在 stackoverflow 上问我开户了]
编辑:这是关于您通过“npm install koa-router”获得的 NPM
如何正确使用 Koa-Router 和 PUT 向服务器发送数据?
我会这样做:
// trivial stuff ommitted
router.put('/devices/myDevice', (ctx, next) => {
console.log('ctx:',ctx);
ctx.body = "nothing in ctx which looks like my data: whatever"
next();
});
和客户端:
fetch('http://localhost:3000/devices/myDevice',{
method: 'PUT',
data: "whatever"
})
.then(function(data){
return data.json();
}).then(function(res){
})
.catch(function(err) {
console.log('Fetching myDevice Error:', err);
});
这样做,我的 ctx 看起来像这样:
ctx: { request:
{ method: 'PUT',
url: '/devices/myDevice',
header:
{ host: 'localhost:3000',
connection: 'keep-alive',
'content-length': '0',
origin: 'null',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99
Safari/537.36',
accept: '*/*',
'accept-encoding': 'gzip, deflate, br',
'accept-language': 'de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7' } },
response:
{ status: 404,
message: 'Not Found',
header: { vary: 'Origin', 'access-control-allow-origin': 'null' } },
app: { subdomainOffset: 2, proxy: false, env: 'development' },
originalUrl: '/devices/myDevice',
req: '<original node req>',
res: '<original node res>',
socket: '<original node socket>' }
正如人们所看到的,我得到一个 404,但路由被触发到 console.log(ctx)... 我也看不到我尝试发送到服务器的数据。Cors 标头是 btw 设置的。GET 和 DELETE 等其他路由工作正常。
这是一个错误还是有人可以重现所描述的行为?
解决方案
推荐阅读
- linux - 为什么我在运行 roscd 时收到 roscd: No such package/stack 'test_pub_sub/src' 错误?
- javascript - 如何增加地图字段中的值?
- java - 休眠中是否存在多级结构
- android - 使用 sortedBy(...) 排序在 kotlin 中不起作用
- arduino - Arduino:为什么我的步进器不反向移动?
- python - 数据框中列的总和值
- batch-file - 如何将文本文件中的行解析/传递到要使用该字符串运行的程序
- javascript - java脚本和离子的对象对象错误
- python - 比较列表。哪些元素不在列表中?
- node.js - TypeError:无法读取未定义的属性“db”。使用 mongodb atlas 但在本地使用 mongodb 时没有错误