簡體   English   中英

在 JavaScript 中實現 curl 發布請求 Fetch API

[英]Implement curl post request in JavaScript Fetch API

我正在嘗試在 JS Fetch API 中使用 curl 來實現這個發布請求:

curl --user apikey:{my_secret_apikey} --request POST --header "Content-Type: application/json" --data "{\"text\":[\"Hello\"],\"model_id\":\"en-es\"}" "{my_secret_url}/v3/translate?version=2018-05-01"

我在實現 API 密鑰時遇到問題。

我試過這個,但它不起作用。 我從服務器收到 401 未經授權的錯誤。

fetch(url, {
    method: "POST",
    headers: { 'Content-Type': 'application/json' },
    user: {
        "apikey": blablabla_api_key
    }
    body: {
        "text": [term],
        "model_id": "en-hi"
    }
}).then(res ........

任何幫助表示贊賞!

編輯:如果您對如何使用其他一些 HTTP 庫將這個帖子請求實現到 JS 有任何其他建議,那也很有幫助!

使用授權 header 編輯的代碼:

let headers = new Headers();

headers.append('Authorization', 'Basic ' + btoa("apikey" + ":" + "my_api_key"));
headers.append('Content-Type', 'application/json');
fetch(url, {
    method: "POST",
    headers: headers,
    body: {
        "text": ["Hello"],
        "model_id": "en-es"
    }
}).then(result => {
    console.log(result);
    resolve(result.translations[0].translation);
}).catch(err => console.log(err));

這會導致 400 Bad Request 錯誤,即使 curl 請求工作正常。

希望我回答你的問題還為時不晚。 我遇到了和你一樣的問題,我的解決方案是將授權編碼為 base64。

https://observablehq.com/@mbostock/fetch-with-basic-auth#:~:text=To%20use%20basic%20authentication%20with,result%20in%20a%20401%20error

我正在使用 Node.js,所以我需要使用 Buffer 進行編碼過程。 如果我正確理解了您的問題,您必須執行以下操作:

let buffer = Buffer.from(apikey:{my_secret_apikey})
let base64data = buff.toString('base64')

您的授權 header 應設置為如下所示:

headers: {'Authorization': `Basic ${base64data}`}

這至少幫助我解決了我一直在努力解決的問題。 希望它也適用於你!

暫無
暫無

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

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