Restful API是目前比较成熟的一套互联网应用程序的API设计理念,Rest是一组架构约束条件和原则,如何Rest约束条件和原则的架构,我们就称为Restful架构,Restful架构具有结构清晰、符合标准、易于理解以及扩展方便等特点,受到越来越多网站的采用!

Restful API接口规范包括以下部分:

一、协议

API与用户的通信协议,总是使用HTTPs协议。

二、域名

应该尽量将API部署在专用域名之下,如https://api.专属域名.com;如果确定API很简单,不会有进一步扩展,可以考虑放在主域名下,如https://专属域名.com/api/。

三、版本

可以将版本号放在HTTP头信息中,也可以放入URL中,如https://api.专属域名.com/v1/

四、路径

路径是一种地址,在互联网上表现为网址,在RESTful架构中,每个网址代表一种资源(resource),所以网址中不能有动词,只能有名词,而且所用的名词往往与数据库的表格名对应。一般来说,数据库中的表都是同种记录的"集合"(collection),所以API中的名词也应该使用复数,如https://api.专属域名.com/v1/students。

五、HTTP动词

对于资源的具体操作类型,由HTTP动词表示,HTTP动词主要有以下几种,括号中对应的是SQL命令。

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

2. POST(CREATE):在服务器新建一个资源;

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

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

5. DELETE(DELETE):从服务器删除资源;

6. HEAD:获取资源的元数据;

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

六、过滤信息

如果记录数量很多,服务器不可能都将它们返回给用户,API会提供参数,过滤返回结果,常见的参数有:

1. ?limit=20:指定返回记录的数量为20;

2. ?offset=8:指定返回记录的开始位置为8;

3. ?page=1&per_page=50:指定第1页,以及每页的记录数为50;

4. ?sortby=name&order=asc:指定返回结果按照name属性进行升序排序;

5. ?animal_type_id=2:指定筛选条件。

七、状态码

服务器会向用户返回状态码和提示信息,以下是常用的一些状态码:

1. 200 OK - [GET]:服务器成功返回用户请求的数据;

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

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

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

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

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

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

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

9. 406 Not Acceptable - [GET]:用户请求的格式不可得;

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

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

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

八、错误处理

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

九、返回结果

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

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

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

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

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

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

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

十、Hypermedia API

RESTful API最好做到Hypermedia,即返回结果中提供链接,连向其他API方法,使得用户不查文档,也知道下一步应该做什么。

以上是Restful API设计应遵循的十大规范,除此之外,Restful API还需注意身份认证应该使用OAuth 2.0框架,服务器返回的数据格式,应该尽量使用JSON,避免使用XML。

转载于:https://www.cnblogs.com/a-dyw/p/9319414.html

REST ful规范相关推荐

  1. 社交系统/社群系统ThinkSNS+ alpha.2 版本发布!

    2019独角兽企业重金招聘Python工程师标准>>> 其实,alpha.1 早上打的 tag ,晚上因为增加了两个核心功能,所以又打了 alpha.2 tag. ThinkSNS团 ...

  2. C# 控件缩写大全+命名规范+示例

    如有转载,请注明出处:http://www.cnblogs.com/flydoos/archive/2011/08/29/2158903.html C# 控件缩写大全+命名规范+示例 写程序的时候突然 ...

  3. 【精】Verilog语言缩写规范

    Verilog语言缩写规范 1. 缩写目的 信号(或变量或者常量,以下统一为信号)缩写有利于减少代码长度,减少书写错误,使代码更简洁美观,但是不规范的缩写则会导致易读性降低,因此需要对Verilog语 ...

  4. 编程(代码、软件)规范(适用嵌入式、单片机、上位机等)

    目录 前言 第1章 文件 1.1 头文件 1.2 定义文件 第2章 注释规范 2.1 共性注释规范 2.2 文档注释规范 2.3 C语言风格注释规范 第3章 排版规范 3.1 缩进与对齐 风格 3.2 ...

  5. Rest ful API的一些基本概念

    0,应用背景 Rest ful api是  Fielding(楼下那叔叔) 在他的论文<Architectural Styles and the Design of Network-based ...

  6. Quarkus 实战二:开发REST ful 服务实现简单的curd功能

    Quarkus 实战二:开发REST ful 服务实现简单的curd 概述 Quarkus集成了RESTEasy,这是一种用于定义REST API的JAX-RS实现 参考文档: Quarkus 文档 ...

  7. Alibaba代码规范插件、FindBugs插件安装及详解,IDEA插件安装,代码规范,代码查错,代码格式规范

    这是帮助开发者规范代码,培养优良的编码习惯的两个IDEA插件

  8. 规范的 Commit Message

    在 Angular 规范中,Commit Message 包含三个部分,分别是 Header.Body 和 Footer,格式如下: <type>[optional scope]: < ...

  9. README 规范和项目文档规范

    1. README 规范 我们直接通过一个 README 模板,来看一下 README 规范中的内容: # 项目名称<!-- 写一段简短的话描述项目 -->## 功能特性<!-- 描 ...

最新文章

  1. TCP/IP 10.1集成IS-IS协议
  2. Java Stream(流)的分类, 四大基本流的介绍
  3. Jupyter Noteboot 添加kernel 环境
  4. IT项目经理每天每周都在干什么?附简要周报模板
  5. c语言从入门到精通真垃圾,从入门到精通的C语言(吐血量)
  6. wpa_supplicant
  7. IT战略规划,我们在做什么?(上)
  8. 在 LaTeX 中插入图片
  9. 电子海图开发第四十七篇 GPS数据解析(共一百篇)
  10. 属性子集选择的基本启发方法_【数据挖掘笔记三】数据预处理
  11. JAVA商城项目(微服务框架)——第11天 elasticsearch搜索
  12. Android天气预报+百度天气接口
  13. Velocity+IText+Flying-saucer生成pdf文件
  14. java 图形 登录_java登录图形界面 - osc_994n5tsc的个人空间 - OSCHINA - 中文开源技术交流社区...
  15. OpenCV drawMatches出现报错Error: Assertion failed
  16. ad中按钮开关的符号_基础3:按钮开关,图文秒懂!
  17. Hcash:见证量子计算和后量子密码的“矛盾较量”
  18. OSChina 周三乱弹 ——大变魔术啦,汪星人秒变熊孩子
  19. 一线开发大牛带你初步了解如何使用SpringBoot搭建框架
  20. 米筐量化如何安装使用?

热门文章

  1. 2020年396分上岸湖南大学计算机专硕考研经验分享
  2. Matlab绘制线条消除锯齿
  3. SSL1659 栈练习括弧匹配检验
  4. 【PHP】json返回大括弧和中括弧,json返回{}和[]
  5. Neo4j-Graph Database Internals
  6. 腾讯“鹅城”开建,斥资370亿;提前泄露小米新机博主被判赔偿100万;传字节跳动实习生删除GB以下所有机器学习模型 | EA周报...
  7. 广告冷启动_创业公司“品牌冷启动”是战略级的工作
  8. Hadoop新手篇:hadoop入门基础教程 1
  9. C#XML序列化特性全中文教程
  10. 2019牛客暑期多校训练营 第三场 I Median