我必须与从GET请求的主体获取参数的API进行交互。我知道这可能不是最好的主意,但这是API的构建方式。
当我尝试使用XMLHttpRequest
构建查询时,看起来好像没有发送有效负载。您可以运行此命令并在“网络”标签中查看;请求已发送,但没有正文(在最新的Chrome和Firefox中经过测试):
const data = {
foo: {
bar: [1, 2, 3]
}
}
const xhr = new XMLHttpRequest()
xhr.open('GET', 'https://my-json-server.typicode.com/typicode/demo/posts')
xhr.setRequestHeader('Content-Type', 'application/json;charset=UTF-8')
xhr.send(JSON.stringify(data))
axios之类的库基于XMLHttpRequest构建,因此它们也不起作用...
有什么方法可以用JavaScript来实现吗?
答案 0 :(得分:3)
否,无法使用JavaScript在正文中发送GET请求。
看起来好像没有发送有效载荷
是正确的。在the specification中定义:
send(body)
方法必须运行以下步骤:...
- 如果请求方法是
GET
或HEAD
,请将 body 设置为null。
另外,通过Fetch API进行的请求不允许使用主体。来自the specification:
- 如果init [“ body”]存在且为非空,或者inputBody为非空,并且请求的方法为
GET
或HEAD
,则抛出TypeError。
最好是可以修复API。
如果无法实现,则可以添加服务器端脚本,将其用作将请求传递到API的代理。然后,您可以使用带有URL中数据而不是正文的GET请求或带有正文的POST请求来调用此脚本。然后,该脚本可以使用主体发出GET请求(只要所选语言支持它即可)。