В чем разница между JSON и данными в запросе Node.js? - PullRequest
1 голос
/ 11 октября 2019

Я хочу знать о разнице между json и data в HTTP-запросах узла

var http = require('http');

let api = {
    url: "https://someurl/api/ticket/create",
    method: "POST",
    headers:
    {        
        "cache-control": "no-cache",
        "Content-Type": "application/json",
        "Accept": "application/json"
    },
    data:{

    }
}

let apiTwo = {
    url: "https://someurl/api/ticket/create",
    method: "POST",
    headers:
    {        
        "cache-control": "no-cache",
        "Content-Type": "application/json",
        "Accept": "application/json"
    },
    json:{

    }
}


http.request(api,function(err,resp,body){ // 400 for api and 200 for apiTwo 

    if(err){
        console.log(err);
    }
    else{
        console.log(resp);
        console.log(body);
    }
})

Когда я нажимаю вышеупомянутый API с data в качестве ключа в запросе, я получаю 400. Когда я нажимаю тот же API с json в качестве ключа в запросе, я получаю 200.

Короче говоря, мой вопрос: json и data настроены на сервере? В чем разница между ними? Какой из них предпочтительнее, когда?

Ответы [ 2 ]

0 голосов
/ 04 ноября 2019

Я узнал, что после большого поиска API-интерфейсы обрабатываются на стороне сервера для data и json отдельно. Поэтому, когда вы передаете json или data в своем запросе API, просмотрите документацию API для правильного выбора между json или data.

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

когда мы делаем запрос на публикацию, тело должно быть в строковом формате. в вашем первом API-запросе тело является объектом, а не строкой, поэтому вы получаете 400

Попробуйте ниже передать данные, здесь я использую json.strinfify для строкового преобразования объекта

let api = {
    url: "https://someurl/api/ticket/create",
    method: "POST",
    headers:
    {        
        "cache-control": "no-cache",
        "Content-Type": "application/json",
        "Accept": "application/json"
    },
    data:JSON.stringfy({})
}

Во втором вызове API в запросе отсутствует тело, поэтому сервер будет считать тело пустым, чтобы он принял запрос. Вы получаете 200 из-за этого, но не из-за JSON

...