Аксиос после запроса возврата 401 - PullRequest
0 голосов
/ 16 октября 2019

Я пытаюсь сделать POST-запрос к API, но получаю ошибку 401. Я могу делать запросы GET к одному и тому же API со статусом 200, поэтому мне интересно, где-нибудь отключен мой синтаксис.

Используемый мной API - это nocrm.io api и запрос POST, который яПытаюсь сделать, можно найти здесь в их справочнике API: https://youdontneedacrm.com/api#create-a-lead

Вот мой POST-запрос из моего файла server.js

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

Это мой запрос в моем клиенте.js file

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

Это вызов GET в моем файле client.js

$.get('/crm/fields').then(response => {
            console.log(response);
        }).catch(error => {
            console.log("Error: " + error);
        })

Любая помощь или предложения будут оценены, спасибо!

[EDIT] Я обнаружил проблему. Мой ответ ниже.

Ответы [ 2 ]

1 голос
/ 16 октября 2019

Вы можете создать общий запросчик для уменьшения избыточности

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

, где data: отправлять, params: queryparams, метод: GET / POST / PUT ... заголовки можно вставлять на месте или передавать какТитулы. Его можно использовать в каждом файле.

0 голосов
/ 16 октября 2019

Я нашел решение своего вопроса, просматривая журналы запросов от службы поддержки 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);
        })
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...