Restful Api

弧矢组合
• 阅读 1668

简介

Resource Representational State Transfer(不知是啥)

Restful Api

特征

(1) 每一个uri代表一种资源;

(2) 客户端和服务器之间,传递这种资源的某种表现层;

(3) 客户端通过四个HTTP动词(GET、POST、DELETE、PUT),对服务器端资源进行操作,实现"表现层状态转化"(增删改查)。

(4) URL中通常不出现动词,只有名词

(5) 使用JSON不使用XML

设计方式

动词 描述
HEAD(SELECT) 只获取某个资源的头部信息
GET(SELECT) 获取资源
POST(CREATE) 创建资源
PATCH(UPDATE) 更新资源的部分属性(很少用,一般用POST代替)
PUT(UPDATE) 更新资源,客户端需要提供新建资源的所有属性
DELETE(DELETE) 删除资源

使用方式

GET http://www.birjemin.com/api/user # 获取列表
POST http://www.birjemin.com/api/user # 创建用户
PUT http://www.birjemin.com/api/user/{id} # 修改用户信息
DELETE http://www.birjemin.com/api/user/{id} # 删除用户信息

过滤信息

用于补充规范一些通用字段

?limit=10 # 指定返回记录的数量
?offset=10 # 指定返回记录的开始位置
?page=2&per_page=100 # 指定第几页,以及每页的记录数
?sortby=name&order=asc # 指定返回结果按照哪个属性排序,以及排序顺序
?state=close # 指定筛选条件

状态码

字段名称为:code

状态码 状态 方式 描述
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 [*] 服务器发生错误,用户将无法判断发出的请求是否成功

错误信息

字段名称:message

示例

{
"code": 200,
"message": "啊哈哈",
"succ": true,
"data": []
}

备注

为了简便,有时候code没有,或者为0,message换成msg,这些实际上实在实际项目中的,不过还是要有一个规范出来,这样方便统一管理。

参考

  1. https://www.cnblogs.com/imyalost/p/7923230.html
  2. http://www.ruanyifeng.com/blog/2014/05/restful_api
点赞
收藏
评论区
推荐文章
blmius blmius
4年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
Wesley13 Wesley13
4年前
REST架构指导方案
REST架构指导方案\TOC\何为REST在2014年之后,社区中关于RESTFUL风格的文章开始渐渐多起,大多数RESTFUL的文章都是在阐述一种HTTPURL路径的写法风格。简单总结来说,这些文章归纳的点主要是:1.URL路径应该是名词而非动词。2.通过HTTP几个动词:GET,POST
Easter79 Easter79
4年前
springboot2.0入门(三)
一、RESTFul风格API  1、优点:   1.)看Url就知道要什么资源2.)看httpmethod就知道针对资源干什么3.)看httpstatuscode就知道结果如何!(https://img2018.cnblogs.com/blog/1675975/201910/1675975201910041339307
Peter20 Peter20
4年前
mysql中like用法
like的通配符有两种%(百分号):代表零个、一个或者多个字符。\(下划线):代表一个数字或者字符。1\.name以"李"开头wherenamelike'李%'2\.name中包含"云",“云”可以在任何位置wherenamelike'%云%'3\.第二个和第三个字符是0的值wheresalarylike'\00%'4\
wanQQ wanQQ
4年前
restful 风格操作es 学习
restful风格操作es|method|url地址|描述||::|::|::||PUT|host:port/索引名/类型名/文档ID|创建文档(指定文档ID)||POST|ho
Stella981 Stella981
4年前
071. ElasticSearch 应用场景及核心概念
1\.ES使用场景给网站/APP添加搜索功能。存储、分析数据。管理、交互、分析空间信息,将ES用于GIS。2\.ES简介Elasticsearch是一个基于Lucene构建的开源、分布式、RESTful接口全文检索引擎。Elast
可莉 可莉
4年前
071. ElasticSearch 应用场景及核心概念
1\.ES使用场景给网站/APP添加搜索功能。存储、分析数据。管理、交互、分析空间信息,将ES用于GIS。2\.ES简介Elasticsearch是一个基于Lucene构建的开源、分布式、RESTful接口全文检索引擎。Elast
Wesley13 Wesley13
4年前
(三)Kubernetes 快速入门
 Kubernetes的核心对象APIServer提供了RESTful风格的编程接口,其管理的资源是KubernetesAPI中的端点,用于存储某种API对象的集合,例如,内置Pod资源是包含了所有Pod对象的集合。资源对象是用于表现集群状态的实体,常用于描述应于哪个节点进行容器化应用、需
Stella981 Stella981
4年前
RESTful接口入门
RESTful产生背景从下面的图片可以看出,当我们需要把相同的数据展示到不同的界面上时,提供一个可以访问后台的接口,前台只负责将数据友好的,华丽的展示出来即可。而不需要为每一个前台都实现很多的后台逻辑。 !RESTful用途(https://static.oschina.net/uploads/img/201807/27
liam liam
1年前
RESTful API 设计教程
RESTful架构基础,代表表现层状态转移(RepresentationalStateTransfer),长久以来一直是API服务的圣杯,最初由RoyFielding在其博士论文中定义。尽管它不是构建API的唯一方法,但由于其广泛的普及,即使是非开发者也对