javascript - 尽管在 Postman 工作,但出现 400 错误,可能的原因是什么?
问题描述
我正在使用 Deepl API,当我在 Postman 中运行请求时它是成功的,但是在我的应用程序中使用它时它只返回一个 400 错误,我认为这意味着标头设置不正确,但这就是如何它在我的邮递员中。谁能指出这里可能存在什么问题?
async translateMessage(data = {}) {
const url = "https://api.deepl.com/v2/translate?auth_key=myAuthKey";
const response = await fetch(url, {
method: "POST",
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'Accept': '*/*'
},
body: {
text: JSON.stringify(this.text),
target_lang: 'DE',
source_lang: 'EN'
}
});
return response.json();
},
POST /v2/translate?auth_key=[yourAuthKey]> HTTP/1.0
Host: api.deepl.com
User-Agent: YourApp
Accept: */*
Content-Length: [length]
Content-Type: application/x-www-form-urlencoded
auth_key=[yourAuthKey]&text=Hello, world&source_lang=EN&target_lang=DE
解决方案
body
URL 编码消息(具有内容类型)的属性application/x-www-form-urlencoded
必须是查询参数的字符串或URLSearchParams
实例。
解决方案
- 将键/值对的对象传递给
URLSearchParams
构造函数。 - 您也可以向其中添加
auth_key
(必需的查询参数之一),然后将其从 URL 中删除。 JSON.stringify()
从属性中删除,text
因为这会在翻译中插入不必要的引号。
const url = 'https://api.deepl.com/v2/translate';
const response = await fetch(url, {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'Accept': '*/*'
}, 1️⃣
body: new URLSearchParams({
auth_key: myAuthKey, 2️⃣
text: this.text, 3️⃣
target_lang: 'DE',
source_lang: 'EN'
})
});
推荐阅读
- angular - AWS EC2 实例正在运行,但我无法连接
- javascript - 定义所有属性时无法读取未定义 React 的属性“绑定”
- knockout.js - 为什么在表行中使用 data-bind ='if' 时会出现 Knockout js 的 ReferenceError
- amazon-web-services - AWS Kinesis 流检查点
- spring-boot - 无法在启用动态端口的 AWS ECS 上正确注册 Eureka 服务
- spring-boot - Spring Boot 不在 Azure WebApp 和 Skype 上显示机器人响应
- java - Java SWT:22 MB 的 runnable.jar 文件。可以减小尺寸吗?
- rest - 使用 Lumen 和 NeoEloquent OGM 从 Neo4j 检索 DateTime
- azure-resource-manager - 资源未定义
- laravel - 使用 JavaScript 查看 laravel 会话