平时开发网页或者调用接口时,经常要发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对象就行:
const formData = new FormData();\\nformData.append(\\"nickname\\", \\"小明\\");\\nformData.append(\\"avatar\\", fileInput.files[0]);\\nfetch(\\"/upload\\", {\\n method: 'POST',\\n body: formData\\n});\n\nx-www-form-urlencoded怎么填
\n这是老式表单的默认格式,把数据变成键值对拼在Body里。比如登录页输入用户名密码,可能就用这个:
\nusername=admin&password=123456\nJavaScript里可以用URLSearchParams来生成:
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:
\nfetch('/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的类型。
调试时怎么看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,网络请求"}