我是新手,正在学习使用 API。我在使用 axios 时收到 POST 请求错误。
在docs我想交互的 API,他们给出了 curl 示例。
curl -X POST https://ssuploader.streamsb.com/upload/01
-d "api_key=948324jkl3h45h"
-d "@path/filename.mp4"
-H "Content-Type: application/x-www-form-urlencoded"
我正在尝试使用 axios 发出该 POST 请求。我写了这样一个简单的脚本。
const axiosConfig = {
headers : {
"Content-Type": "application/x-www-form-urlencoded"
}
}
const file = __dirname + "/video/Video.mp4";
const fileData = fs.readFileSync(file);
const data = `api_key=${API_KEY}&${fileData}`;
axios.post('https://ssuploader.streamsb.com/upload/01', data, axiosConfig).then((result) => {
console.log(result.data);
}).catch((err) => {
console.log("Getting Error : ", err);
});
我遇到了这个错误。
Getting Error : AxiosError: getaddrinfo ENOTFOUND ssuploader.streamsb.com
我对与 API 交互真的很陌生,所以我认为在将 curl 转换为 axios 时我的某些结构是错误的。我真的不知道该怎么办。我的意思是我无法弄清楚我的错误。谁能帮我?非常感谢。
一些变化
我在答案的帮助下弄清楚了我的一些错误。我忘了先获取服务器。所以我更新了我的代码。
const file = __dirname + "/video/Video.mp4";
const fileData = fs.createReadStream(file);
const formData = new FormData();
formData.append('file', fileData);
formData.append('api_key', API_KEY);
console.log(formData)
axios.get(`https://api.streamsb.com/api/upload/server?key=${API_KEY}`).then(result => {
const url = result.data.result;
axios.post(url, formData, axiosConfig)
.then((result) => {
console.log(result.data);
}).catch((err) => {
console.log("Getting Error : ", err);
});
})
但是我得到了新的错误。
AxiosError: Request failed with status code 400
最佳答案
据我从文档中了解到,这是一个两步过程。首先,您需要获取上传 URL(他们称之为服务器),然后使用它来上传您的文件。
所以使用这样的东西:
axios.get(`https://api.streamsb.com/api/upload/server?key=${API_KEY}`).then((result) => {
const url = result.data.result;
// your post request to this url here
}).catch((err) => {
console.log("Getting Error : ", err);
});
关于javascript - 公理错误 : getaddrinfo ENOTFOUND,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75085050/