我有一个带有一些ajax的快速应用程序,调用一些远程端点。目前,我的api调用正在发布到我本地服务器上的端点。 Express侦听这些端点并将请求传递给远程服务器并解析响应。
这适用于我的大多数端点,除了一个POST方法,它需要代码的查询参数和 Array [int] 类型的主体。每个请求对此端点的响应返回405.如果我直接在ajax请求中调用服务器端点,则返回成功。这个问题对任何人都响了吗?
以下是数据流的样子。
$.ajax({
type: "POST",
url: "/promos/validate?code=testing",
data: JSON.stringify([1]),
success: function(data) {
console.log(data)
}.bind(this),
error: function(xhr, status, err) {
console.log(status)
}.bind(this)
});
然后我们用快递
进行路线router.post('/promos/validate', function(req, res) {
pipe(req, res).post(http://remoteUrl/promos/validate/code=testing);
});
在post方法中,生成http.request函数,该函数将以下对象作为options参数
发送{
protocol: 'http:',
query: '?code=testing',
host: 'remote-api.com',
port: 80,
hostname: 'remote-api.com',
href: 'http://remote-api.com?code=testing',
path: '/promos/validate',
method: 'POST',
headers: { 'Content-Type': 'application/json', 'Content-Length': 8 }
}
最后,我们使用write将请求主体流式传输到服务器。每次发生这种情况,它都会返回405.任何想法?
答案 0 :(得分:0)
两件事:将内容类型设置为application / json需要ajax请求,结果是请求命中405,因为当查询被追加到&#39时,查询被分成了自己的属性。 ;路径'财产选择。
我通过查看Node.js文档中的选项列表 - https://nodejs.org/api/http.html#http_http_request_options_callback
找到了这一点