簡體   English   中英

Axios post請求返回401

[英]Axios post request returning 401

我正在嘗試向 API 發出 POST 請求,但我不斷收到 401 錯誤。 我可以在 200 狀態下向同一個 API 發出 GET 請求,所以我想知道我的語法是否在某個地方關閉。

The API I'm using is nocrm.io api and the POST request that I'm trying to make can be found here in their API reference: 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

這是一個在 server.js 文件中運行良好的 GET 請求示例

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);
        })

任何幫助或建議將不勝感激,謝謝!

[編輯]我發現了問題。 我的答案如下。

您可以創建一個通用請求者以減少冗余

function doRequest(method: string, url: string, params?: Object, data?: Object){
    var headers ...;
    return axios({
      method: method,
      baseUrl: 'getfromconfig'
      url: url,
      data: data,
      params: params
    });
}

其中數據:發布,參數:查詢參數,方法:GET / POST / PUT ...標題可以就地初始化或作為參數傳遞。 它可以在每個文件中重復使用。

在查看來自 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);
        })
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM