HTTP API响应数据规范整理
概述
本文档为本人对长期开发API接口所整理的经验总结,如有不完善或不合理的地方,望各位多提意见。
文档目的为规范服务器端API接口,便于服务器端与客户端代码重用。服务器端和客户端可根据实际所定义规范编写序列化和反序列化工具,以便减少一些开发时间。
本文档为个人观点,仅供参考。
HTTP接口
Execute(CUD)
用于client向server发起的POST、PUT和DELETE请求
JSON
参考
{
"code": "value", //结果码,必需。客户端应首先根据此项结果进行相应处理。
"message": "value" //文本消息提示。
}
XML格式
参考
<?xml version="1.0" encoding="utf-8"?>
<result>
<code></code>
<message></message>
</result>
Query(R)
单项数据查询
JSON
参考
{
"code": "value", //响应结果码,必需;客户端可根据此结果判断数据查询是否正常
"datum": {
}
}
示例
{
"code": 1,
"datum": {
"id":3,
"name":"jennifer"
"age": 23,
"sex": "female"
}
}
Xml格式
参考
<?xml version="1.0" encoding="utf-8"?>
<result>
<code></code>
<datum>
<id></id>
<name></name>
<age></age>
<sex></sex>
</datum>
</result>
示例
<?xml version="1.0" encoding="utf-8"?>
<result>
<code>1</code>
<datum>
<id>3</id>
<name>jennifer</name>
<age>23</age>
<sex>female</sex>
</datum>
</result>
列表数据查询
Json格式
参考
{
"code": "value", //响应结果码,必需。
"data": [{ //数据列表,数组
},{
}]
}
示例
{
"code": 1,
"data": [{
"id":3,
"name":"jennifer"
"age": 23,
"sex": "female"
},{
"id":5,
"name":"lenbo"
"age": 21,
"sex": "male"
}]
}
Xml格式
参考
<?xml version="1.0" encoding="utf-8"?>
<result>
<code></code>
<data>
<datum>
</datum>
<datum>
</datum>
</data>
</result>
示例
<?xml version="1.0" encoding="utf-8"?>
<result>
<code>1</code>
<data>
<datum>
<id>5</id>
<name>lenbo</name>
<age>21</age>
<sex>male</sex>
</datum>
</data>
</result>
分页数据查询
Json格式
参考
{
"code": 1, //响应结果码,必需。
"page": { //分页参数,必需。
"totalpage": "value", //总页数
"count":"value", //每页记录条数
"curr": "value", //本页页码
"totalcount": "value" //总记录数
},
"data": [{ //列表数据,数组。
},{
},{
}]
}
示例
{
"code": 1,
"page": {
"totalpage": 20, //总页数
"count":10, //每页记录条数
"curr":1, //本页页码
"totalcount": 180 //总记录数
},
"data": [{
"id":3,
"name":"jennifer"
"age": 23,
"sex": "female"
},{
"id":5,
"name":"lenbo"
"age": 21,
"sex": "male"
}]
}
Xml格式
参考
<?xml version="1.0" encoding="utf-8"?>
<result>
<code></code>
<page>
<totalpage></totalpage>
<count></count>
<curr></curr>
<totalcount></totalcount>
</page>
<data>
<datum>
</datum>
<datum>
</datum>
</data>
</result>
示例
<?xml version="1.0" encoding="utf-8"?>
<result>
<code>1</code>
<page>
<totalpage>20</totalpage>
<count>10</count>
<curr>2</curr>
<totalcount>180</totalcount>
</page>
<data>
<datum>
<id>5</id>
<name>lenbo</name>
<age>21</age>
<sex>male</sex>
</datum>
<datum>
<id>2</id>
<name>jennifer</name>
<age>23</age>
<sex>female</sex>
</datum>
</data>
</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响应数据规范整理的更多相关文章
- 使用 ASP.NET Core MVC 创建 Web API——响应数据的内容协商(七)
使用 ASP.NET Core MVC 创建 Web API 使用 ASP.NET Core MVC 创建 Web API(一) 使用 ASP.NET Core MVC 创建 Web API(二) 使 ...
- 【ASP.NET Core】设置 Web API 响应数据的格式——FormatFilter特性篇
在上一篇烂文中老周已向各位介绍过 Produces 特性的使用,本文老周将介绍另一个特性类:FormatFilterAttribute. 这个特性算得上是筛选器的马甲,除了从 Attribute 类派 ...
- jQuery-1.9.1源码分析系列(十六)ajax——响应数据处理和api整理
ajax在得到请求响应后主要会做两个处理:获取响应数据和使用类型转化器转化数据 a.获取响应数据 获取响应数据是调用ajaxHandleResponses函数来处理. ajaxHandleRespon ...
- ASP.NET Web API 记录请求响应数据到日志的一个方法
原文:http://blog.bossma.cn/dotnet/asp-net-web-api-log-request-response/ ASP.NET Web API 记录请求响应数据到日志的一个 ...
- 或许是 WebGIS 下一代的数据规范 - OGC API 系列
目录 1. 前言 1.1. 经典的 OGC 标准回顾 1.2. 共同特点与时代变化 1.3. 免责声明 2. 什么是 OGC API 2.1. OGC API 是一个开放.动态的规范族 2.2. OG ...
- Elasticsearch Java API 很全的整理
Elasticsearch 的API 分为 REST Client API(http请求形式)以及 transportClient API两种.相比来说transportClient API效率更高, ...
- API 接口开发规范
整体规范建议采用RESTful 方式来实施. 协议 API与用户的通信协议,总是使用HTTPs协议,确保交互数据的传输安全. 域名 应该尽量将API部署在专用域名之下.https://api.exam ...
- i3s 一种开源的三维地理数据规范 简单解读
i3s,esri主推到ogc的一种三维开源GIS数据标准. 版权声明:原创.博客园/B站/小专栏/知乎/CSDN @秋意正寒 转载请标注原地址并声明转载: https://www.cnblogs.co ...
- 代码规范、API设计等规范
一份整理好了的规范文档,node后端开发用到 "规范是个好东西..." - 鲁迅 以下规范仅作为参考 1.代码规范 命名 尽量保证命名更加语义化 文件命名采用下划线命名法 // g ...
随机推荐
- 2014 华为校招机试题(c/c++开发类)
第一题: 1.2.3....n盏灯,同时有n个人, 第1个人将1的倍数的灯拉一下, 第2个人将2的倍数的灯拉一下, ...... 问最后有几盏灯是亮的, 初始状态下灯是灭的, 输入整数n(n<6 ...
- iOS - UITextView实现placeHolder占位文字
iOS之UITextView实现placeHolder占位文字的N种方法 前言 iOS开发中,UITextField和UITextView是最常用的文本接受类和文本展示类的控件.UITextFie ...
- 119、 android:hardwareAccelerated="true"or"false"硬件加速的重要性
每次做项目都会遇见一些特别简单的问题,但是又很费时间来让你解决的问题. 1.本身想实现一个简单的画廊效果,可是每次图片的显示都不能显示在正中的位置,真的很烦人,也花费了很长时间.最终还是知道了原因.解 ...
- springmvc接收前台(可以是ajax)传来的数组list,map,set等集合,复杂对象集合等图文详解
参考帖子: http://blog.csdn.net/wabiaozia/article/details/50803581 方法参考: { "token":"" ...
- php 原生文件下载
1.整个网页的html界面源码下载: xiazai.php <html> <head> <meta charset ="utf-8"> < ...
- JS函数匿名替换
//匿名替换函数 function objFunc() { var obj = new Object(); obj.JsonData = [{ aa: "}], obj.FilterData ...
- linux下的shell操作mysql
(1)MySQL的启动 重启了一次服务器后,使用> mysql -u root -p登陆是出现下面的错误: ERROR 2002 (HY000): Can't connect to local ...
- RH318之域控服务器
Windows2012域控服务器 一.安装域服务及DNS 1.配置静态IP 2.点击左下角 3.进入--->服务器管理器 4.点击角色和功能 勾选Active Directory域服务与DNS服 ...
- javascript的fn方法(转)
jQuery为开发插件提拱了两个方法,分别是: jQuery.fn.extend(object); jQuery.extend(object); jQuery.extend(object); 为扩展j ...
- activeMQ---->ActiveMQ的使用(一)
这里通过一个入门的案例来体会一下ActiveMQ的作用以及使用方法.你要做一个不动声色的大人了.不准情绪化,不准偷偷想念,不准回头看.去过自己另外的生活.你要听话,不是所有的鱼都会生活在同一片海里. ...