HTTP请求Body怎么填

{"title":"HTTP请求Body怎么填","content":"

平时开发网页或者调用接口时,经常要发HTTP请求。很多人搞不清什么时候该往Body里填数据,该怎么填。其实没那么复杂,关键看请求方法和后端要什么格式。

\n\n

哪些请求会带Body

\n

并不是所有请求都有Body。比如GET一般只靠URL传参,不会在Body里放东西。但POST、PUT、PATCH这些方法,通常就需要提交数据到服务器,这时候就得填Body了。比如你注册账号、上传文件、修改用户信息,基本都得走POST或PUT,数据就放在Body里发过去。

\n\n

常见的Body格式有哪几种

\n

最常见的是这三种:form-data、x-www-form-urlencoded、JSON。它们用的场景不一样,填法也不同。

\n\n

用form-data传数据

\n

这种适合上传文件,也支持文本字段。浏览器原生表单默认就是它。比如你要上传头像加昵称,可以这样组织:

\n
--boundary\\r\\nContent-Disposition: form-data; name=\\"nickname\\"\\r\\n\\r\\n小明\\r\\n--boundary\\r\\nContent-Disposition: form-data; name=\\"avatar\\"; filename=\\"photo.jpg\\"\\r\\nContent-Type: image\\/jpeg\\r\\n\\r\\n...二进制数据...\\r\\n--boundary--
\n

实际写代码不用手动拼,用FormData对象就行:

\n
const formData = new FormData();\\nformData.append(\\"nickname\\", \\"小明\\");\\nformData.append(\\"avatar\\", fileInput.files[0]);\\nfetch(\\"/upload\\", {\\n  method: 'POST',\\n  body: formData\\n});
\n\n

x-www-form-urlencoded怎么填

\n

这是老式表单的默认格式,把数据变成键值对拼在Body里。比如登录页输入用户名密码,可能就用这个:

\n
username=admin&password=123456
\n

JavaScript里可以用URLSearchParams来生成:

\n
const params = new URLSearchParams();\\nparams.append('username', 'admin');\\nparams.append('password', '123456');\\nfetch('/login', {\\n  method: 'POST',\\n  headers: {\\n    'Content-Type': 'application/x-www-form-urlencoded'\\n  },\\n  body: params\\n});
\n\n

发送JSON数据

\n

现在前后端分离项目大多用JSON传数据。比如你调用某个API创建订单,Body就得是JSON格式:

\n
{\\n  \\"product_id\\": 1001,\\n  \\"count\\": 2,\\n  \\"address\\": \\"北京市朝阳区XXX\\"\\n}
\n

对应的请求要加上正确的Content-Type:

\n
fetch('/api/order', {\\n  method: 'POST',\\n  headers: {\\n    'Content-Type': 'application/json'\\n  },\\n  body: JSON.stringify({\\n    product_id: 1001,\\n    count: 2,\\n    address: '北京市朝阳区XXX'\\n  })\\n});
\n\n

别忘了设置请求头

\n

填了Body还不够,服务器得知道怎么解析。比如你发的是JSON,但没加Content-Type: application/json,后端可能当成普通字符串处理,结果就错了。同理,用form-data时不需要手动设Content-Type,因为浏览器会自动加一个带boundary的类型。

\n\n

调试时怎么看Body有没有填对

\n

打开浏览器开发者工具,选Network标签,点开具体请求,看Headers里有没有正确的Content-Type,再看Payload或Form Data部分的数据结构对不对。如果后台收不到数据,八成是格式或类型不匹配。

\n\n

说白了,填HTTP请求的Body就三步:选对格式、填对内容、设对类型。照着接口文档来,基本不会出错。

","seo_title":"HTTP请求Body怎么填 - 实用填写方法与格式详解","seo_description":"详解HTTP请求中Body的填写方法,包括form-data、x-www-form-urlencoded和JSON等常见格式的实际使用场景与代码示例。","keywords":"HTTP请求,Body填写,POST请求,JSON格式,form-data,x-www-form-urlencoded,网络请求"}