我正在使用express
编写一个简单的api进行培训。这是我的测试代码:
var express = require('express');
var app = express();
app.post("/api/:var_name", function(req, res) {
res.send(req.params.var_name);
});
只是测试以查看POST
是否有效。当我致电http://localhost:3000/api/1
时,我得到Cannot GET /api/1
,因此服务器显然将POST
请求解释为GET
,我需要做些什么来调用POST
来代替?
答案 0 :(得分:1)
您在浏览器地址栏中调用的任何内容都将通过get发送。这是因为post-messages(以及几乎所有其他方法)确实有一个body-part。但是,您的浏览器无法在http数据包的正文中发送其他信息。
如果您想测试GET以外的任何方法的路线,我建议您下载像邮差一样的工具。
当心:这是我的偏好。你也可以诅咒使用像curl这样的基于文本的浏览器来测试它。
答案 1 :(得分:0)
服务器根据您在HTTP请求中设置的动词解释请求。如果没有指定方法/动词,则将其解释为GET(不确定此部分)。
当您调用该URL时,您也需要使用该方法。例如,如果您使用fetch API,则可以将其命名为:
fetch(url, {method:"POST"})
如果您在浏览器中输入该内容并希望将其解释为发布请求,则不然。所有浏览器网址请求都是GET。使用像Postman这样的工具来调用不同的HTTP动词。在创建此类API时,它非常有用。
您可以查看此答案,详细了解如何在帖子请求中添加正文和标题:Fetch: POST json data