当前位置: 首页 > news >正文

请求体类型全解

请求体格式

一般我们使用 POST 请求时都会附带请求体,而常用的比如 formdata,那么它作用的环境是什么?特点又如何?下面将逐一介绍最常用的几种请求体格式,以及如何使用搭配案例介绍


json

JSON 是较为常用且易于分析的请求体格式;

JSON 格式的需求:

  1. 整体使用一个大括号包裹
  2. 以键值对的形式逐个书写属性,且 key 必须使用双引号括起来
  3. 值 value 存在多种形式,比如字符串以及数值、数组类型
  4. 每条属性(除去最后一条)末尾必须添加英文逗号作为分隔
{
  "name": "tom",
  "age": 12,
  "habits": ["swim", "other"]
}

JSON 所有支持的属性类型:数值、字符串、对象、数组、布尔、null

JS 中可以使用 JSON.parse() 方法将字符串类型数值直接转换为 JSON 格式
同理,JSON.stringify() 可以吧 JSON 对象转换为字符串类型


multipart/form-data

当前对于此格式的请求体使用概率不高,特别是表单提交时,此格式提供的安全性保证较低

若要上传文件,则推荐使用此格式;

他依然是按照键值对的形式存储数据(下面展示 js 中如何操作 formdata 类型数据):

  1. 使用 new FormData() 创建一个新的空 form-data 表单
  2. formData.append("tag","cat") 使用 append 插入一条新属性
  3. formData.get("tag") 使用 get 根据键来获取对应值

application/x-www-form-urlencoded

此为 POST 的默认传输格式,也即 form 表单提交时默认使用的编码方式

当使用 GET 请求时:x-www-form-urlencoded 会将所有键值对转换后添加到 URL 的尾部,即我们常见到的 ?name=123&age=12 之类的内容;

当使用 POST 请求时,x-www-form-urlencoded 会把所有键值对切分后封装到请求体里面后在发送请求,当且仅当我们请求时附带文件时才会动用 multipart/form-data(上文有提到)


XML

使用场景较少,以类似 HTML 的标签组成的文件结构

这是我们必须要关注到的重要特性:

  1. 由一个根标签+N 个子标签组成,且根节点必须存在
  2. 标签命名随意
  3. 标签命名是大小写敏感的

这是一个非常简单的 XML 格式文件

文件首行为 XML 声明,它定义了当前 XML 文件的一些属性(比如编码类型)
同理,你可以和 HTML 一样,为这些节点们添加自定义属性

<?xml version="1.0" encoding="UTF-8"?>
<root>
    <name>zhiller</name>
    <age tag="demo"></age>
</root>

raw

即字符串形式,最简单的一种格式


相关文章:

  • Linux嵌入式开发——文件系统结构
  • 【操作系统】——主流的操作系统(带你快速了解)
  • ffmpeg 批处理截取片头片尾
  • 3.3 Dodgson算法
  • 第七层:多态
  • TCP为什么是三次握手和四次挥手以及可能出现的问题
  • 软件工程 黄金点游戏
  • 你是真的“C”——2023年除夕夜 牛客网刷题经验分享~
  • 史上最详细的AVL树的实现(万字+动图讲解旋转)
  • 文件操作详解-IO
  • 23种设计模式(十四)——中介者模式【接口隔离】
  • 量子机器学习相关的最近研究动态(复数篇论文的一些简单整理)
  • 第十三届蓝桥杯省赛JavaA组 D 题、Java C 组 G 题、Python C 组 G题——GCD(AC)
  • 字节青训前端笔记 | 响应式系统与 React
  • Allegro如何输出第三方网表操作指导
  • 89. 注意力机制以及代码实现Nadaraya-Waston 核回归
  • 云原生技能树-docker caontainer 操作
  • 使用 Burpsuite 测试的常用操作(一)
  • 应届生身份为什么重要?
  • PHP MySQL Delete
  • https://app.hackthebox.com/machines/Inject
  • Spring —— Spring简单的读取和存储对象 Ⅱ
  • 渗透测试之冰蝎实战
  • Mybatis、TKMybatis对比
  • Microsoft Office 2019(2022年10月批量许可版)图文教程
  • 《谷粒商城基础篇》分布式基础环境搭建
  • 哈希表题目:砖墙
  • Vue 3.0 选项 生命周期钩子
  • 【车载嵌入式开发】AutoSar架构入门介绍篇
  • 【计算机视觉 | 目标检测】DETR风格的目标检测框架解读