【问题标题】:How do I make a good post request for Sabre Rail Search Single Trip? I get 'ERR_BAD_REQUEST' Bad Request Error如何为 Sabre Rail Search Single Trip 提出一个好的发布请求?我收到 \'ERR_BAD_REQUEST\' 错误请求错误
【发布时间】:2022-10-17 23:11:16
【问题描述】:

https://developer.sabre.com/docs/rest_apis/ground/content_services_rail/search_single_trip/reference-documentation

POST 请求中需要带有“searchCriteria”的“requestBody”。

如果我没有指定“requestBody”,我会收到“无访问权限”错误。

但是当我将“requestBody”添加到参数时,我得到 [AxiosError: Request failed with status code 400] { 代码:'ERR_BAD_REQUEST',...

我不明白。我应该如何将“requestBody”和“searchCriteria”合并到代码和请求中?在 JSON 示例中,他们甚至将其放在“payload”中,当我将“searchCriteria”放在“payload”而不是 params.requestBody 中时,我得到“no privilages”错误。

无论我将“requestBody”和“searchCriteria”放在哪里,我似乎都无法获得一个成功的响应。

const optionsToUse = {
  method: 'POST',
  url: "https://api-crt.cert.havail.sabre.com/v1/rail/offers/journeys/1S",
  params: {
    marketingCarrierCode: "1S",
    requestBody : {
      "searchCriteria" : [ {
        "journeyCriteria" : {
          "departure" : {
            "locationId" : "FRPLY",
            "dateTime" : "2022-08-02T07:07"
          },
          "arrival" : {
            "locationId" : "FRLPD"
          }
        },
        "passengerCriteria" : [ {
          "passengerCode" : "ADULT"
        } ]
      } ]
    }
  },
  headers: {
    Authorization: "Bearer " + access_token
  }
}

axios.request(optionsToUse).then(function (response) {
    console.log(response.data);
}).catch(function (error) {
    console.error(error);
});

【问题讨论】:

    标签: javascript node.js axios request sabre


    【解决方案1】:

    飞龙,

    您需要在 data 中传递您的正文而不是在 params 中并删除您的 params 属性,因为 marketingCarrierCode 是 url 内的参数,而不是查询参数:

    const optionsToUse = {
      method: 'POST',
      url: "https://api-crt.cert.havail.sabre.com/v1/rail/offers/journeys/1S",
      data: {
        "searchCriteria" : [ {
          "journeyCriteria" : {
            "departure" : {
              "locationId" : "FRPLY",
              "dateTime" : "2022-08-02T07:07"
            },
            "arrival" : {
              "locationId" : "FRLPD"
            }
          },
          "passengerCriteria" : [ {
            "passengerCode" : "ADULT"
          } ]
        } ]
      },
      headers: {
        Authorization: "Bearer " + access_token
      }
    }
    

    (请求配置的 Axios 文档https://axios-http.com/docs/req_config)

    【讨论】:

      猜你喜欢
      • 2019-10-26
      • 2019-01-30
      • 1970-01-01
      • 2021-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多