1.协议 http && https

2.域名 https://api.example.com && https://example.org/api/

3.版本  https://api.example.com/v1/

4.路径  每个网址代表一种资源(resource) 只能有名词,而且所用的名词往往与数据库的表格名对应 一般来说,

数据库中的表都是同种记录的"集合"(collection),所以API中的名词也应该使用复数。

https://api.example.com/v1/employees

5.HTTP动词

GET(SELECT):从服务器取出资源(一项或多项)。

POST(CREATE):在服务器新建一个资源。

PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源)。

PATCH(UPDATE):在服务器更新资源(客户端提供改变的属性)。

DELETE(DELETE):从服务器删除资源。

HEAD:获取资源的元数据。

OPTIONS:获取信息,关于资源的哪些属性是客户端可以改变的。

GET /zoos:列出所有动物园

POST /zoos:新建一个动物园

GET /zoos/ID:获取某个指定动物园的信息

PUT /zoos/ID:更新某个指定动物园的信息(提供该动物园的全部信息)

PATCH /zoos/ID:更新某个指定动物园的信息(提供该动物园的部分信息)

DELETE /zoos/ID:删除某个动物园

GET /zoos/ID/animals:列出某个指定动物园的所有动物

DELETE /zoos/ID/animals/ID:删除某个指定动物园的指定动物

6. 参数

?page=1&size=1

status = 2

keyword = 'a'

7. 状态码 Status Codes

200 OK - [GET]:服务器成功返回用户请求的数据,该操作是幂等的(Idempotent)。

201 CREATED - [POST/PUT/PATCH]:用户新建或修改数据成功。

202 Accepted - [*]:表示一个请求已经进入后台排队(异步任务)

204 NO CONTENT - [DELETE]:用户删除数据成功。

400 INVALID REQUEST - [POST/PUT/PATCH]:用户发出的请求有错误,服务器没有进行新建或修改数据的操作,该操作是幂等的。

401 Unauthorized - [*]:表示用户没有权限(令牌、用户名、密码错误)。

403 Forbidden - [*] 表示用户得到授权(与401错误相对),但是访问是被禁止的。

404 NOT FOUND - [*]:用户发出的请求针对的是不存在的记录,服务器没有进行操作,该操作是幂等的。

406 Not Acceptable - [GET]:用户请求的格式不可得(比如用户请求JSON格式,但是只有XML格式)。

410 Gone -[GET]:用户请求的资源被永久删除,且不会再得到的。

422 Unprocesable entity - [POST/PUT/PATCH] 当创建一个对象时,发生一个验证错误。

500 INTERNAL SERVER ERROR - [*]:服务器发生错误,用户将无法判断发出的请求是否成功。

8. 错误处理

如果状态码是4xx,就应该向用户返回出错信息。一般来说,返回的信息中将error作为键名,出错信息作为键值即可。

{

error: "Invalid API key"

}

9.返回结果

针对不同操作,服务器向用户返回的结果应该符合以下规范。

GET /collection:返回资源对象的列表(数组)

GET /collection/resource:返回单个资源对象

POST /collection:返回新生成的资源对象

PUT /collection/resource:返回完整的资源对象

PATCH /collection/resource:返回完整的资源对象

DELETE /collection/resource:返回一个空文档

java restful开发规范_restful api 开发规范相关推荐

  1. resulful规范_Restful API设计规范及实战【说的比较清楚了】

    Restful API的概念在此就不费口舌了,博友们网上查哈定义文章很多,直入正题吧: 首先抛出一个问题: 判断id为 用户下,名称为 使命召唤14(COD14) 的产品是否存在(话说我还是很喜欢玩类 ...

  2. restful接口开发实例_Restful接口开发与测试—接口测试

    开发完接口,接下来我们需要对我们开发的接口进行测试.接口测试的方法比较多,使用接口工具或者Python来测试都可以,工具方面比如之前我们学习过的Postman或者Jmeter ,Python脚本测试可 ...

  3. restful url 设计规范_RESTful API接口设计规范

    网络应用程序,分为前端和后端两个部分.当前的发展趋势,就是前端设备层出不穷(手机.平板.桌面电脑.其他专用设备-).因此,必须有一种统一的机制,方便不同的前端设备与后端进行通信.这导致API构架的流行 ...

  4. java restful中文乱码_restful服务接口访问乱码 和 505错误

    标签: 用cxf 发部个rest服务,用浏览器访问和 HttpURLConnection 访问. 1. URL中有中文,浏览器访问正常,HttpURLConnection 失败. 解决: HttpUR ...

  5. API开发平台应用场景和产品研发

    对于前后端分离的应用来说,后端应用主要是以API的形式对外提供能力,而在微服务架构盛行的当下,很多企业对于后端传统的应用程序已经做了打散和拆分,实现了微服务改造.如果一个企业的IT建设比较全的话,那么 ...

  6. php新浪微博转发 发布微博apisdk,新浪微博API开发简介之PHP根底篇-用户授权

    新浪微博API开发简介之PHP根底篇-用户授权 如今玩微博的人越来越多了,而关于微博的第三方运用开发也越来越多,本人在偶然间末尾接触了新浪微博API开发,新浪微博API开发的资源比较多,新浪微博提供了 ...

  7. 新浪微博开发平台基于php的sdk包(包含demo程序),新浪微博API开发简介之用户授权(PHP基础篇)...

    现在玩微博的人越来越多了,而关于微博的第三方应用开发也越来越多,自己在偶然间开始接触了新浪微博API开发,新浪微博API开发的资源比较多,新浪微博提供了一个开发者的平台,网址是:http://open ...

  8. java代码开发规范_java代码开发规范

    一  编码规范 1.1      命名规范 代码中的命名均不能以特殊字符(如下划线.$#符号)开始或结束. 反例: _name / #Object 2. 代码中的命名严禁使用拼音与英文混合的方式,更不 ...

  9. 基于 abp vNext 和 .NET Core 开发博客项目 - 统一规范API,包装返回模型

    基于 abp vNext 和 .NET Core 开发博客项目 - 统一规范API,包装返回模型 转载于:https://github.com/Meowv/Blog 在实际开发过程中,每个公司可能不尽 ...

最新文章

  1. C# Winform程序中使用TeeChart实现简单的图表展示
  2. Oracle 执行计划 提示 'PLAN_TABLE' is old version 解决方法
  3. JasperReport学习笔记2-创建简单的报表例子
  4. python3安装cx oracle,[求助]python3安装cx_Oracle 报错
  5. 博客园里输入latex公式
  6. 一文带你彻底了解大数据处理引擎Flink内存管理
  7. 3D引擎多线程:渲染与逻辑分离
  8. 一个请求在Struts2框架中的处理的步骤
  9. 【我的失败人生】1105感到自己的弱小
  10. displaytag 的使用
  11. 屏幕录像专家录制超清视频教程如何解决转码后不清晰问题
  12. 影响力最大化 IC模型+贪心算法
  13. MAE(掩码自编码器)是可扩展的计算机视觉自监督学习方法
  14. 《 Programming Collective Intelligence》案例介绍与分析——Making Recommendations
  15. DSN1COPY错误-SP映射页面错误
  16. Jenkins高级篇之Pipeline语法篇-7-Declarative Pipeline指令:triggers/stage/tool
  17. 无聊猿将与 Coinbase 共同制作电影三部曲进军好莱坞
  18. 基于单片机的智能交通灯系统的设计
  19. 办公大楼综合布线系统设计方案
  20. Docker之WARNING: IPv4 forwarding is disabled. Networking will not work(虚拟机配置网络异常:IPv4)解决方案

热门文章

  1. C# 获得 当年1月1号
  2. redhat6.5 升级内核
  3. 【luogu P2341 [HAOI2006]受欢迎的牛】 题解
  4. Python学习-day20 django进阶篇
  5. Linux uart程序
  6. Python中yield的作用??
  7. SQL Server 2005 无法连接到服务器,error:26
  8. java 用文件对话框打开文件
  9. Invalid byte 2 of 2-byte UTF-8 sequence解决方案
  10. 2021最新基于会话推荐系统长文综述