文档章节

HTTP协议 - API开发常用部分

麦拂沙
 麦拂沙
发布于 2017/05/27 10:00
字数 767
阅读 41
收藏 0

常用HTTP请求头

  • Accept 用来标明期待返回的数据格式以及请求API的版本号,例如application/vnd.site.v1+json
  • Content-Type 用来标明POST或者PUT时HTTP的BODY内容格式,例如application/json
  • Authorization 用来标明请求者的身份认证信息,例如Bearer 25877b47826645fdb5bf50b9be4d02fa

常用HTTP返回头

  • Link 用来表示资源相关的链接,在POST创建接口表示新创建资源的地址,在列表接口用来表示分页首末页地址
  • X-Total-Count 用来表示分页请求时总记录的数量
  • X-RateLimit-Limit 频次限制为多少次
  • X-RateLimit-Remaining 频次限制还差多少就触发限制
  • X-RateLimit-Reset 下一次频次限制重置时间戳
  • X-Request-ID 每一次请求唯一的ID
  • Access-Control-Allow-Origin CORS允许所有的Ajax跨域请求,例如*
  • Access-Control-Expose-Headers CORS允许JS读取的返回头,例如Link,X-Total-Count

常用HTTP状态码

  • 200 ok 用来表示请求的资源以及对应的操作正确无误的完成
  • 201 created 用来表示POST要创建的资源创建成功
  • 400 bad_request 用来表示通用的客户端请求错误,没有具体的明确意指,但可以判断是客户端引起的错误
  • 401 authentication_failed 用来表示身份认证的错误,即当前接口需要登陆后再请求但未从请求中获取到身份信息
  • 403 authorization_failed 用来表示授权类型的错误,即当前登陆用户没有权限执行该API操作
  • 404 resource_not_found 用来表示请求的REST资源不存在,查证资源ID后再试
  • 405 method_not_allowed 用来表示请求的REST资源不支持该HTTP Method,查证操作方法后再试
  • 409 conflict 用来表示服务器存在的资源与要更新的资源存在冲突,无法完成更新,请重新请求最新资源再更新
  • 415 unsupported_media_type 用来表示Http Header指定的Accept类型未被支持,需要更换Accept类型
  • 422 validation_failed 用来表示提交上来的数据没有通过validation规则,需要求改投递数据
  • 429 too_many_requests 用来表示接口请求次数超限,需要暂缓请求,暂缓时间参考Retry-After的Header值
  • 500 internal_error 用来表示接口出现了内部错误,很可能是未处理的异常事件,请通知API组进行处理
  • 503 service_unavailable 用来表示服务暂时不可用,客户端可稍后重试

Rest重要的几条规范

  • 使用专用域名
  • URI使用中划线、名词复数(避免动词)
  • 合理使用查询参数(避免uri层级过深、排序、分页)
  • 正确使用HTTP请求方法来处理CURD
  • 优先在head中进行版本控制(Accept: application/vnd.github.v3+json),其次在uri中处理(/v1)
  • 无状态协议,不得基于cookie、session,可使用token替代
  • 数据响应优先考虑json
  • 对api进行限流
  • 错误响应设计{code:xx, message:yy, description:可选错误描述, errors:[可选,校验错误]}
  • SSL加密(防止通信数据,token等被窃听)

© 著作权归作者所有

上一篇: RabbitMQ
麦拂沙
粉丝 22
博文 120
码字总数 109619
作品 1
海淀
高级程序员
私信 提问
RESTful 接口设计开发规范

API 接口可以说是软件开发人员的用户界面,API 设计也是系统架构的重要环节。尤其对复杂和分布式系统而言,其设计的好坏,直接影响着整个系统的设计,实现和演进。一套糟糕的 API 设计也会严...

garyond
2018/07/23
0
0
今晚九点|Flask 基础与 Web 开发实战

废话不多说,我们直接来介绍这次公开课的内容。 主要内容: 一、Web 开发基础 二、在 Flask 中的 “Hello World” 三、Flask 的模版 四、Flask 的消息提示与异常处理 一、Web 开发基础 本章节...

xjtuhit
2017/11/09
0
0
揭秘Windows10 UWP中的httpclient接口[2]

阅读目录: 概述 如何选择 System.Net.Http Windows.Web.Http HTTP的常用功能 修改http头部 设置超时 使用身份验证凭据 使用客户端证书 cookie处理 概述 作为一个Universal Windows Platform ...

鼎六智能
2016/10/19
21
0
WebService - RoadMap

Why RoadMap 由于网络带宽的发展,WebService作为分布式计算的解决方案越来越重要。如果想学习WebService,那应该首先从最高层次了解WebService的工作原理,以及技术构成。然后再往底层深化,...

xpbug
2014/04/17
0
0
java程序员使用web3j进行以太坊开发详解

如何使用web3j为Java应用或Android App增加以太坊区块链支持,教程内容即涉及以太坊中的核心概念,例如账户管理包括账户的创建、钱包创建、交易转账,交易与状态、智能合约开发与交互、过滤器...

笔阁
2018/06/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Android双向绑定原理简述

Android双向绑定原理简述 双向绑定涉及两个部分,即将业务状态的变化传递给UI,以及将用户输入信息传递给业务模型。 首先我们来看业务状态是如何传递给UI的。开启dataBinding后,编译器为布局...

tommwq
今天
2
0
Spring系列教程八: Spring实现事务的两种方式

一、 Spring事务概念: 事务是一系列的动作,它们综合在一起才是一个完整的工作单元,这些动作必须全部完成,如果有一个失败的话,那么事务就会回滚到最开始的状态,仿佛什么都没发生过一样。...

我叫小糖主
今天
6
0
CentOS 的基本使用

1. 使用 sudo 命令, 可以以 root 身份执行命令, 必须要在 /etc/sudoers 中定义普通用户 2. 设置 阿里云 yum 镜像, 参考 https://opsx.alibaba.com/mirror # 备份mv /etc/yum.repos.d/CentO...

北漂的我
昨天
3
0
Proxmox VE技巧 移除PVE “没有有效订阅” 的弹窗提示

登陆的时候提示没有有效的订阅You do not have a valid subscription for this server. Please visit www.proxmox.com to get a list of available options. 用的是免费版的,所以每次都提示......

以谁为师
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部