簡體   English   中英

將 Python API 調用轉換為 NodeJS Axios Z8A5DA52ED126447D359E70C0572A 如何正確調用它?

[英]Translating Python API call to NodeJS Axios api call - how do I format it correctly?

我收到 400 錯誤和isAxiosError: true 我認為問題在於 auth 行的格式不正確,或者我不太了解參數在 axios 中的工作原理以及 api 需要什么? 我在將 python 翻譯成 Axios/JS 時做錯了什么? 這是Voila Norbert API 文檔

這是我的 Axios api 電話。

axios.post('https://api.voilanorbert.com/2018-01-08/search/name', {
  params: {
    auth: {any_string: API_KEY},
    data: { 
      domain: 'amazon.com',
      name: 'Jeff Bezos'
    }
  }
})

這是 python 版本:

API_TOKEN = 'abcde'

req = requests.post(
  'https://api.voilanorbert.com/2018-01-08/search/name',
  auth=('any_string', API_TOKEN),
  data = {
      'name': 'Cyril Nicodeme',
      'domain': 'reflectiv.net'
  }
)

根據他們的文檔https://github.com/axios/axios ,您需要將auth作為單獨的字段提供,而不是在params內:

axios.post('https://api.voilanorbert.com/2018-01-08/search/name', {
  auth: {
    username: 'any_string',
    password: API_KEY
  },
  data: { 
    domain: 'amazon.com',
    name: 'Jeff Bezos'
  }
})

更新:刪除了paramsdata的嵌套。 它們應該作為 POST 正文發送,而不是 URL 參數。

我的這個答案遲到了一年,但我在用相同的 API 處理同樣的錯誤時發現了你的問題。 API 文檔建議的 Python 代碼對我有用,響應成功,但我想在 Node 中執行此操作,JS 代碼返回 400 錯誤。 我正在分享我的解決方案,以防將來對其他人有所幫助。

我認為核心問題是 API 期望數據以表單數據的形式發布,而不是 JSON。 我按照另一篇文章中的示例使用 Axios 發布表單數據,但仍然收到 400 錯誤。

然后我嘗試使用請求 package 而不是 Axios 發布它,這會導致成功響應(無錯誤):

const request = require('request');

var data = {'name': 'Jeff Bezos', 'domain': 'amazon.com'};

request.post({
    url: 'https://any_string:API_KEY@api.voilanorbert.com/2018-01-08/search/name',
    form: data,
}, function(error, response, body){
    console.log(body);
});

此示例在數據包含在表單中時有效:字段但在正文中時無效:

請注意請求 package 已棄用並處於維護模式。

暫無
暫無

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

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