概述

本文档为本人对长期开发API接口所整理的经验总结,如有不完善或不合理的地方,望各位多提意见。

文档目的为规范服务器端API接口,便于服务器端与客户端代码重用。服务器端和客户端可根据实际所定义规范编写序列化和反序列化工具,以便减少一些开发时间。

本文档为个人观点,仅供参考。

HTTP接口

Execute(CUD)

用于client向server发起的POST、PUT和DELETE请求

JSON

参考
  1. {
  2. "code": "value", //结果码,必需。客户端应首先根据此项结果进行相应处理。
  3. "message": "value" //文本消息提示。
  4. }

XML格式

参考
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <result>
  3. <code></code>
  4. <message></message>
  5. </result>

Query(R)

单项数据查询

JSON
参考
  1. {
  2. "code": "value", //响应结果码,必需;客户端可根据此结果判断数据查询是否正常
  3. "datum": {
  4. }
  5. }

示例

  1. {
  2. "code": 1,
  3. "datum": {
  4. "id":3,
  5. "name":"jennifer"
  6. "age": 23,
  7. "sex": "female"
  8. }
  9. }
Xml格式
参考
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <result>
  3. <code></code>
  4. <datum>
  5. <id></id>
  6. <name></name>
  7. <age></age>
  8. <sex></sex>
  9. </datum>
  10. </result>

示例

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <result>
  3. <code>1</code>
  4. <datum>
  5. <id>3</id>
  6. <name>jennifer</name>
  7. <age>23</age>
  8. <sex>female</sex>
  9. </datum>
  10. </result>

列表数据查询

Json格式
参考
  1. {
  2. "code": "value", //响应结果码,必需。
  3. "data": [{ //数据列表,数组
  4. },{
  5. }]
  6. }

示例

  1. {
  2. "code": 1,
  3. "data": [{
  4. "id":3,
  5. "name":"jennifer"
  6. "age": 23,
  7. "sex": "female"
  8. },{
  9. "id":5,
  10. "name":"lenbo"
  11. "age": 21,
  12. "sex": "male"
  13. }]
  14. }
Xml格式
参考
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <result>
  3. <code></code>
  4. <data>
  5. <datum>
  6. </datum>
  7. <datum>
  8. </datum>
  9. </data>
  10. </result>

示例

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <result>
  3. <code>1</code>
  4. <data>
  5. <datum>
  6. <id>5</id>
  7. <name>lenbo</name>
  8. <age>21</age>
  9. <sex>male</sex>
  10. </datum>
  11. </data>
  12. </result>

分页数据查询

Json格式
参考
  1. {
  2. "code": 1, //响应结果码,必需。
  3. "page": { //分页参数,必需。
  4. "totalpage": "value", //总页数
  5. "count":"value", //每页记录条数
  6. "curr": "value", //本页页码
  7. "totalcount": "value" //总记录数
  8. },
  9. "data": [{ //列表数据,数组。
  10. },{
  11. },{
  12. }]
  13. }

示例

  1. {
  2. "code": 1,
  3. "page": {
  4. "totalpage": 20, //总页数
  5. "count":10, //每页记录条数
  6. "curr":1, //本页页码
  7. "totalcount": 180 //总记录数
  8. },
  9. "data": [{
  10. "id":3,
  11. "name":"jennifer"
  12. "age": 23,
  13. "sex": "female"
  14. },{
  15. "id":5,
  16. "name":"lenbo"
  17. "age": 21,
  18. "sex": "male"
  19. }]
  20. }
Xml格式
参考
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <result>
  3. <code></code>
  4. <page>
  5. <totalpage></totalpage>
  6. <count></count>
  7. <curr></curr>
  8. <totalcount></totalcount>
  9. </page>
  10. <data>
  11. <datum>
  12. </datum>
  13. <datum>
  14. </datum>
  15. </data>
  16. </result>

示例

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <result>
  3. <code>1</code>
  4. <page>
  5. <totalpage>20</totalpage>
  6. <count>10</count>
  7. <curr>2</curr>
  8. <totalcount>180</totalcount>
  9. </page>
  10. <data>
  11. <datum>
  12. <id>5</id>
  13. <name>lenbo</name>
  14. <age>21</age>
  15. <sex>male</sex>
  16. </datum>
  17. <datum>
  18. <id>2</id>
  19. <name>jennifer</name>
  20. <age>23</age>
  21. <sex>female</sex>
  22. </datum>
  23. </data>
  24. </result>

附录1:code对照表参考

仅供参考,API接口开发人员可根据实际情况自定义相应结果码或节点

  • 200 ok - 成功状态,对应,GET,PUT,PATCH,DELETE.

  • 500 faild - 失败状态

  • 304 not modified - HTTP缓存有效。

  • 400 bad request - 请求格式错误。可以标识参数错误或参数缺失

  • 401 unauthorized - 未授权。

  • 403 forbidden - 鉴权成功,但是该用户没有权限。

  • 404 not found - 请求的资源或接口不存在

  • 405 method not allowed - 该http方法不被允许。

  • 410 gone - 这个url对应的资源现在不可用。

  • 415 unsupported media type - 请求类型错误。

  • 422 unprocessable entity - 校验错误时用。

  • 429 too many request - 请求过多。

HTTP API响应数据规范整理的更多相关文章

  1. 使用 ASP.NET Core MVC 创建 Web API——响应数据的内容协商(七)

    使用 ASP.NET Core MVC 创建 Web API 使用 ASP.NET Core MVC 创建 Web API(一) 使用 ASP.NET Core MVC 创建 Web API(二) 使 ...

  2. 【ASP.NET Core】设置 Web API 响应数据的格式——FormatFilter特性篇

    在上一篇烂文中老周已向各位介绍过 Produces 特性的使用,本文老周将介绍另一个特性类:FormatFilterAttribute. 这个特性算得上是筛选器的马甲,除了从 Attribute 类派 ...

  3. jQuery-1.9.1源码分析系列(十六)ajax——响应数据处理和api整理

    ajax在得到请求响应后主要会做两个处理:获取响应数据和使用类型转化器转化数据 a.获取响应数据 获取响应数据是调用ajaxHandleResponses函数来处理. ajaxHandleRespon ...

  4. ASP.NET Web API 记录请求响应数据到日志的一个方法

    原文:http://blog.bossma.cn/dotnet/asp-net-web-api-log-request-response/ ASP.NET Web API 记录请求响应数据到日志的一个 ...

  5. 或许是 WebGIS 下一代的数据规范 - OGC API 系列

    目录 1. 前言 1.1. 经典的 OGC 标准回顾 1.2. 共同特点与时代变化 1.3. 免责声明 2. 什么是 OGC API 2.1. OGC API 是一个开放.动态的规范族 2.2. OG ...

  6. Elasticsearch Java API 很全的整理

    Elasticsearch 的API 分为 REST Client API(http请求形式)以及 transportClient API两种.相比来说transportClient API效率更高, ...

  7. API 接口开发规范

    整体规范建议采用RESTful 方式来实施. 协议 API与用户的通信协议,总是使用HTTPs协议,确保交互数据的传输安全. 域名 应该尽量将API部署在专用域名之下.https://api.exam ...

  8. i3s 一种开源的三维地理数据规范 简单解读

    i3s,esri主推到ogc的一种三维开源GIS数据标准. 版权声明:原创.博客园/B站/小专栏/知乎/CSDN @秋意正寒 转载请标注原地址并声明转载: https://www.cnblogs.co ...

  9. 代码规范、API设计等规范

    一份整理好了的规范文档,node后端开发用到 "规范是个好东西..." - 鲁迅 以下规范仅作为参考 1.代码规范 命名 尽量保证命名更加语义化 文件命名采用下划线命名法 // g ...

随机推荐

  1. codeforces水题100道 第六题 Yandex.Algorithm 2011 Qualification 2 A. Double Cola (math)

    题目链接:www.codeforces.com/problemset/problem/82/A题意:五个人排队喝可乐,一个人喝完一杯,就在可乐的最后面放两杯自己喝的可乐,问第n个喝的人是谁.C++代码 ...

  2. rabbitMQ常用的命令

    rabbitMQ常用的命令 启动监控管理器:rabbitmq-plugins enable rabbitmq_management 关闭监控管理器:rabbitmq-plugins disable r ...

  3. iOS - UITabBarController中的坑

    当你创建一个继承与UITabBarController的子类 并想给其自定义构造方法 传一些值的时候这时候问题出现了: 在创建的时候里面的init方法回调用了 viewdidload,导致每次传值的时 ...

  4. Material Design系列第四篇——Defining Shadows and Clipping Views

    Defining Shadows and Clipping Views This lesson teaches you to Assign Elevation to Your Views Custom ...

  5. 五、K3 WISE 开发插件《K3 Wise 群发短信配置开发(一)之短信平台配置》

    开发环境:K/3 Wise 13.0 目录 一.创建短信数据库 二.配置短信接口 三.设置帐套关键字 四.查询短信余额 一.创建短信数据库 打开帐套管理: 账号默认为Admin,密码不填: 菜单“系统 ...

  6. 【Spring源码深度解析学习系列】注册解析的BeanDefinition(五)

    对于配置文件,解析和装饰完成之后,对于得到的beanDefinition已经可以满足后续的使用要求了,还剩下注册,也就是processBeanDefinition函数中的BeanDefinitionR ...

  7. sencha touch 可自动增长高度TextArea

    js代码如下: /* *高度自动增长的文本框 */ Ext.define('ux.TextArea', { extend: 'Ext.field.TextArea', xtype: 'autoText ...

  8. openstack-networking-neutron(一)---端到端和点到点的理解

    本博客已经添加"打赏"功能,"打赏"位置位于右边栏红色框中,感谢您赞助的咖啡. ====本文目的===== 理解搞清楚两个概念: 1.端到端    2.点到点  ...

  9. R缺失数据处理

    > open<-c(2529,2468,2417,NA) > high<-c(2529,2483,2419,2419) > SSEC<-data.frame(ope ...

  10. JVM JRE JDK三者的区别和联系

    一. 详细介绍1.JVM -- java virtual machineJVM就是我们常说的java虚拟机,它是整个java实现跨平台的 最核心的部分,所有的java程序会首先被编译为.class的类 ...