# 请求方式与请求参数

常用的请求方式无非就是增删改查,在 http 请求中增删改查对应的请求方式分别为:

  • post:增,提交数据给服务端
  • delete:删,删除指定的数据
  • put:改,更改服务端已有的数据
  • get:查,从服务端获取数据

与这些相对的还有这些请求方式携带参数的形式,总共有三种携带数据的方式:

  • query 参数:

    即查询字符串,就是我们最最常见的在地址栏上携带参数,get 请求常用这种方式携带参数,例如 /addUser?userName=asuhe&userId=1 。这种请求方式用 ? 来与请求路径分割,当携带多个 query 参数时就用 & 来分割参数

    • query 参数的数据是显示暴露在地址栏上的
    • 编码方式为 urlencoded
  • params 参数

    params 参数和 query 参数一样是显示地暴露在地址栏上的,例如 server: /addUser/:userId ,client: /addUser/1 ,服务端就收到 userId=1

  • 请求体参数

    通常 post 请求发送的参数就是请求体参数,用这种方法携带参数会将参数包含在 http 请求的请求体中。该种参数有两种格式一种是 urlencoded ,另一种是 json

    • urlencoded 格式:在请求体中参数是以类似 query 参数的形式存放,例如: name=asuhe&age=18 。请求头参数的格式为: Content-Type: application/x-www-form-urlencoded
    • json 格式:参数在请求体中以 json 格式存放,例如: {"name":"tom","age":18} 。其请求头中的参数为: Content-Type: application/json

# 请求方式与请求参数之间的联系

  • 通常情况下,请求方式与请求参数可以任意搭配。也就是说,即使我们使用 post 的方式提交参数,我们也可以使用 query 参数的形式来携带提交的数据
  • 理论上一次请求可以使用上述三种类型参数中的任何一种,也可以同时使用不同类型的参数来完成一次请求
  • get 请求方式有些特殊, get 方式提交请求不能使用请求体参数来携带数据,因为 get 请求是没有请求体的

# API 接口风格

根据后端接口处理请求的方式,我们可以将 API 接口分为 restful 风格和非 restful 风格的 API。

# REST API

rest APIrestful 风格的 API 有如下特点:

  • server 后端 CURD 操作是根据 client 发送请求的方式来决定的
  • 同一个请求路径可以进行多个操作
  • 请求方式会用到 getpostputdelete

通常 rest API 对同一数据进行操作时,只有一个路径。例如对用户信息进行 CURD, rest API 的形式为 /user 。客户端要对用户信息进行增就使用 post 请求提交数据,删就用 delete 请求,依次类推实现数据操作。这一个接口就实现了 CURD 四种功能

# 非 REST API

非rest APIrestless 风格的 API,它有如下特点:

  • 后端 CURD 操作不根据 client 的请求方式决定,而是根据请求路径
  • 一个请求路径只对应一个操作
  • 一般只使用 getpost 请求就够了

开发中最常见的一个操作对应一个请求路径的就是 restless API 了。