我正在尝试向API发出POST请求,但始终收到401错误。我可以以200个状态向相同的API发出GET请求,所以我想知道我的语法是否在某个地方不正确。
我正在使用的API是nocrm.io api,我正在尝试发出的POST请求可以在其API参考中找到:https://youdontneedacrm.com/api#create-a-lead
这是我来自server.js文件的POST请求
app.post('/crm/leads', (request, response) => {
var baseurl = 'https://OURACCOUNT.nocrm.io/api/v2/'
var apikey = 'API_KEY'
var path = leads
axios.post(baseurl + path, {
params: {
title: "Testing",
description: "Business Name: Test Company",
user_id: "someone@someemail.com",
tags: ['TAG']
},
headers: {'X-API-KEY': apikey, content_type: "json", accept: "application/json"}
}).then(function(res){
console.log("Good");
response.send(res);
}).catch(function(error){
console.log("Error: " + error);
})
}
这是我在client.js文件中的请求
$.post('/crm/leads').then(response => {
console.log(response);
}).catch(error => {
console.log("Error: " + error);
})
我从中得到的错误是:错误:请求失败,状态为401
这是一个GET请求的示例,该请求在server.js文件中可以正常工作
app.get('/crm/fields', (request, response) => {
var baseurl = 'https://OURACCOUNT.nocrm.io/api/v2/'
var apikey = 'API_KEY'
var path = fields;
axios.get(baseurl + path, {
headers: {'X-API-KEY': apikey, content_type: "json", accept: "application/json"},
params: {'type': "lead"}
}).then(function(res){
response.send(res.data); // send data to client
}).catch(function(error){
console.log("Error: " + error);
})
}
这是我client.js文件中对GET请求的调用
$.get('/crm/fields').then(response => {
console.log(response);
}).catch(error => {
console.log("Error: " + error);
})
任何帮助或建议将不胜感激,谢谢!
[编辑] 我发现了问题。我的答案在下面。
答案 0 :(得分:1)
您可以创建一个通用请求程序以减少冗余
function doRequest(method: string, url: string, params?: Object, data?: Object){
var headers ...;
return axios({
method: method,
baseUrl: 'getfromconfig'
url: url,
data: data,
params: params
});
}
其中数据:要发布,参数:queryparams,方法:GET / POST / PUT ... 标头可以就地初始化或作为参数传递。在每个文件中都可以重用。
答案 1 :(得分:0)
在查看来自API支持的请求日志时,我找到了问题的解决方案。起初我不清楚的问题是我在参数中包含标题。
请求应改为:
app.post('/crm/leads', (request, response) =>{
var baseurl = 'https://OURACCOUNT.nocrm.io/api/v2/'
var apikey = 'API_KEY'
var path = leads
var params = {
title: "Testing",
description: "Business Name: Test Company",
user_id: "someone@someemail.com",
tags: ["TAG"]
}
axios.post(baseurl + path,
params
,{
headers: {'X-API-KEY': apikey, content_type: "json", accept:
"application/json"}
}).then(function(res){
console.log("Good");
response.send(res);
}).catch(function(error){
console.log("Error: " + error);
})
}