Правильный синтаксис для вызова rest API с использованием jQuery - PullRequest
0 голосов
/ 19 января 2019

Я вызываю API отдыха, предоставленный 2Checkout. Вот мой код

  $.ajax({
    type: "GET",
    dataType: "jsonp",
    contentType: "application/json",
    accepts: {json:"application/json"},
    url: "https://api.2checkout.com/rest/5.0/subscriptions/9C77B952C2/",
    success: function(data){
    },
    error: function(){
    }
  });

Когда я выполняю этот код, я получаю ошибку: net::ERR_ABORTED 415

Когда я пытаюсь открыть URL в новой вкладке, я получаю:

{"error_code":"INVALID_CONTENT_TYPE","message":"The current resource can not be served as [text/html, application/xhtml+xml, application/xml;q=0.9, image/webp, image/apng, */*;q=0.8] content-types"}

Итак, исходя из того, что я решил, мне нужно указать правильный тип контента, который будет принят сервером, поэтому я добавил:

 accepts: {json:"application/json"},

2Поддержка подтверждения сообщает мне "when using REST API make sure that http header also contains “Accept: application/json”. This is mandatory for the call to work and for retrieving info."

Но их единственный пример - это сырой javascript, а не jQuery. Пример JavaScript выглядит так:

var request = new XMLHttpRequest();

request.open('GET', 'https://api.2checkout.com/rest/5.0/subscriptions/{SubscriptionReference}/');

request.setRequestHeader('Content-Type', 'application/json');
request.setRequestHeader('Accept', 'application/json');

request.onreadystatechange = function () {
  if (this.readyState === 4) {
    console.log('Status:', this.status);
    console.log('Headers:', this.getAllResponseHeaders());
    console.log('Body:', this.responseText);
  }
};

request.send();

Так что я хотел бы сделать эту работу в jQuery, если это возможно, и я чувствую, что это не должно быть так сложно, но я продолжаю получать ошибку.

К сожалению, документация jquery не очень специфична и содержит только пример нестандартного типа, который, я думаю, не будет. Также в нем говорится, что значение по умолчанию для «accept» зависит от типа данных, который в моем случае является jsonp, поэтому я предположил бы, что он автоматически принимает application / json, но это не так.

В чем тут подвох?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...