API设计

API设计 #

设计前提 #

  • GET:表示查询时需支持幂等。
    • 使用 GET 时地址栏会暴露给所有用户,可能会被运营商缓存,被 Nginx、应用自身的日志等记录,所以 GET 参数不应该包含任何敏感信息。
    • 某些 SDK、客户端、代理可能会自动重试 GET 请求,所以要么 GET 都支持幂等,要么更换其它 HTTP 方法。
  • POST:表示创建时不支持幂等。
  • PUT:表示全部更新时可以支持幂等。
  • PATCH:表示局部更新时可以支持幂等。

Restful接口 #

查询接口 #

按客户端类型返回

  • GET /movies/100?format=full
  • GET /movies/100?format=mobile

筛选字段

  • GET /movies/100?fields=title,kind,rating
  • GET /movies/100?exclude=actors
  • GET /movies/100?includes=actors.name

条件过滤

  • GET /movies?state=onshow&title=superman
  • GET /movies?id=100,200

分页查询

  • GET /movies?offset=20&limit=10
  • GET /movies?last_id=10&limit=10

显示详情

  • GET /movies/100

修改接口 #

  • PUT /movies/100/avatar
    • 创建或修改某个资源下的所有属性(通过payload指定)。
  • PATCH /movies/100
    • 只修改某个资源下的部分属性(通过payload指定)。
  • POST /movies/100/score?add=10
    • 将资源的某个属性值加10。

RPC接口 #

此处的RPC接口特指那些不涉及到资源修改的功能。

  • GET /translate?from=en_US&to=zh_CN&text=Hello
  • GET /calculate?x=100&y=200

接口版本号 #

  • 版本号通过请求头version插入
沪ICP备17055033号-2