javascript 如何使用fetch编写一个既能传body参数,又能传Query参数的请求代码?

javascript 如何使用fetch编写一个既能传body参数,又能传Query内容参数的请求代码

比如用fetch发起Http请求格式中,其中的Query和body都有内容的话,那要怎么传参?可以不用刻意设置Content-Type和method吗?

比如如下请求格式,对应的fetch代码是什么?

GET /test?a=b HTTP/1.1
Host: 127.0.0.1:8080
Content-Type: text/plain
Content-Length: 6

asdasd

该请求,有两个参数部分,分别是Query部分的?a=b,以及Body部分的asdasd。

阅读 3.7k
1 个回答

feath 虽然不能直接同时传 queryStringbody,但可以通过URL.searchParams来实现:

var url = new URL('https://sl.se')

var params = {lat:35.696233, long:139.570431} // or:

var payload = JSON.stringify({'key0':'val0','key1':'val1'});

url.search = new URLSearchParams(params).toString();

fetch(url,{body: payload });

// 同上
fetch(url.toString(),{body: payload });
GET /sl.se?lat=35.696233&long=139.570431 HTTP/1.1

/r/n/r/n

//payload
{
    "key0":"val0",
    "key1":"val1"
}

当然也可以手动拼query String……

注意,这个URLSearchParams不支持 IE,IE 所有版本都不支持

再补充下,query String不用额外处理的,Content-Type和你的payload/body 部分对应上就好,原先传 payload 用什么类型,现在有了 query String之后还是什么类型。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题