Dubbo 03 Restful风格的API
Dubbo03
restful风格的API
Representational State Transfer,资源表现层状态转换
根路径
mashibing.com
协议
http://
版本
v1
可以直接写在URL上,或者写在header中传递“Accept-Version: v2”
@RequestMapping(headers = "Accept-Version=v2",value = "models",method = RequestMethod.GET)
用HTTP协议里的动词来实现资源的增删改查
GET 用来获取资源,
POST 用来新建资源(也可以用于更新资源)。
DELETE 用来删除资源。
UPDATE http://api.chesxs.com/v1/fence 更新围栏信息
用例
单个资源
http://mashibing.com/api/v1/Users/1 使用Get方法获取id是1的用户数据
正确:GET /model/models/{id} #获取单个资源
正确:POST /model/models #创建单个资源
正确:PUT /model/models/{id} #更新单个资源
正确:DELETE /model/models/{id} #删除单个资源
正确:PATCH /model/models/{id} #更新单个资源(只传差异)
正确:GET /model/configRuleFile #获取单个资源(如果仅有一个值时,应采用单数方式)
返回结果:
如果指定的资源并不存在,那么应该返回404 Not Found状态,否则应该返回200 OK状态码
资源集合
对于资源集合,支持以下URL
正确: GET /model/models #获取资源列表
正确: GET /model/models?ids={ids} #批量获取资源列表
正确: DELETE /model/models?ids={ids} #批量删除资源列表
返回结果:
如果列表为空,则应该空数组
响应结果
响应状态码 | 含义 | |
---|---|---|
成功 | 200 | 调用成功 |
201 | 创建成功 | |
204 | 执行成功,但无返回值 | |
失败 | 400 | 无效请求 |
401 | 没有登录 | |
403 | 没有权限 | |
404 | 请求的资源不存在 | |
500 | 服务内部错误 |
swagger(丝袜哥)
Swagger是一个简单但功能强大的API表达工具。它具有地球上最大的API工具生态系统,数以千计的开发人员,使用几乎所有的现代编程语言,都在支持和使用Swagger。使用Swagger生成API,我们可以得到交互式文档,自动生成代码的SDK以及API的发现特性等。
OpenAPI
OpenAPI规范是Linux基金会的一个项目,试图通过定义一种用来描述API格式或API定义的语言,来规范RESTful服务开发过程。OpenAPI规范帮助我们描述一个API的基本信息
比如:
- 有关该API的一般性描述
- 可用路径(/资源)
- 在每个路径上的可用操作(获取/提交...)
- 每个操作的输入/输出格式
根据OpenAPI规范编写的二进制文本文件,能够像代码一样用任何VCS工具管理起来一旦编写完成,API文档可以作为:
- 需求和系统特性描述的根据
- 前后台查询、讨论、自测的基础
- 部分或者全部代码自动生成的根据
- 其他重要的作用,比如开放平台开发者的手册...
资源
官网
在线编辑器
编写API文档
我们可以选择使用JSON或者YAML的语言格式来编写API文档
swagger: '2.0'
info:
version: 1.0.0
title: mashibing.com api
description: 马老师的官网接口
contact:
name: yiming
url: http://mashibing.com
email: 888@qqq.com
license:
name: MIT
url: http://opensource.org/licenses/MIT
schemes:
- http
host: mashibing.com
basePath: /api/v1
paths:
/user/{userid}:
get:
summary: 获取一个用户
description: 根据id获取用户信息
parameters:
- name: userid
in: path
required: true
description: 用户id
type: string
responses:
200:
description: OK
/user:
get:
summary: 返回List 包含所有用户
description: 返回List 包含所有用户
parameters:
- name: pageSize
in: query
description: 每页显示多少
type: integer
- name: pageNum
in: query
description: 当前第几页
type: integer
responses:
200:
description: OK
schema:
type: array
items:
required:
- username
properties:
username:
type: string
password:
type: string
整合SpringBoot
官方依赖
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.2.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.2.2</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-core-asl</artifactId>
<version>1.9.13</version>
</dependency>
第三方
https://github.com/SpringForAll/spring-boot-starter-swagger
依赖引入
<dependency>
<groupId>com.spring4all</groupId>
<artifactId>swagger-spring-boot-starter</artifactId>
<version>1.9.0.RELEASE</version>
</dependency>
启用注解
http://localhost:803//v2/api-docs
http://localhost:8080/swagger-ui.html
分组
swagger.docket.controller.title=group-controller
swagger.docket.controller.base-package=com.mashibing.springboot.controller
swagger.docket.restcontroller.title=group-restcontroller
swagger.docket.restcontroller.base-package=com.mashibing.springboot.controller.rest
实体模型
@ApiModelProperty(value = "权限id", name = "id",dataType = "integer",required = true,example = "1")
private Integer id;
接口方法
@ApiOperation(value = "获取所有权限")
@RequestMapping(value = "list",method = RequestMethod.GET)
public List<Permission> list() {
return permissionSrv.findAll();
}
@ApiOperation(value = "添加权限")
@RequestMapping("update")
public RespStat update(@ApiParam(name="permission",required = true, example = "{json}",value = "权限对象") @RequestBody Permission permission) {
System.out.println("permission:" + ToStringBuilder.reflectionToString(permission));
permissionSrv.update(permission);
return RespStat.build(200);
}
接口类描述
@Api(value = "用户权限管理",tags={"用户操作接口"})
Dubbo 03 Restful风格的API的更多相关文章
- PHP实现RESTful风格的API实例(三)
接前一篇PHP实现RESTful风格的API实例(二) .htaccess :重写URL,使URL以 /restful/class/1 形式访问文件 Options +FollowSymlinks R ...
- PHP实现RESTful风格的API实例(二)
接前一篇PHP实现RESTful风格的API实例(一) Response.php :包含一个Request类,即输出类.根据接收到的Content-Type,将Request类返回的数组拼接成对应的格 ...
- PHP实现RESTful风格的API实例(一)
最近看了一些关于RESTful的资料,自己动手也写了一个RESTful实例,以下是源码 目录详情: restful/ Request.php 数据操作类 Response.php 输出类 index. ...
- PHP实现Restful风格的API
Restful是一种设计风格而不是标准,比如一个接口原本是这样的: http://www1.qixoo.com/user/view/id/1表示获取id为1的用户信息,如果使用Restful风格,可以 ...
- restful风格的API
在说restful风格的API之前,我们要先了解什么是rest.什么是restful.最后才是restful风格的API! PS(REST:是一组架构约束条件和原则,REST是Roy Thomes F ...
- [01] 浅谈RESTful风格的API
1.什么是RESTful风格的API REST,即Representational State Transfer,可以理解为"(资源的)表现层状态转化". 在网络上,我们通过浏览器 ...
- Gin实战:Gin+Mysql简单的Restful风格的API(二)
上一篇介绍了Gin+Mysql简单的Restful风格的API,但代码放在一个文件中,还不属于restful风格,接下来将进行进一步的封装. 目录结构 ☁ gin_restful2 tree . ├─ ...
- Gin实战:Gin+Mysql简单的Restful风格的API
我们已经了解了Golang的Gin框架.对于Webservice服务,restful风格几乎一统天下.Gin也天然的支持restful.下面就使用gin写一个简单的服务,麻雀虽小,五脏俱全.我们先以一 ...
- springMvc中restful风格的api路径中把小数点当参数,SpringMvc中url有小数点
在springMvc web项目中restful风格的api路径中有小数点会被过滤后台拿不到最后一个小数点的问题, 有两种解决方案: 1:在api路径中加入:.+ @RequestMapping(&q ...
随机推荐
- 八十四:redis之redis的集合、哈希操作
set集合操作 添加元素:sadd set value1 value2... 查看元素:smembers set 移除元素:srem set member 查看集合中的元素个数:scard set 获 ...
- python开发工具-pycharm专业版
一.pycharm是什么 维基百科的定义: PyCharm是一个用于计算机编程的集成开发环境,主要用于Python语言开发,由捷克公司JetBrains开发,提供代码分析.图形化调试器,集成测试器.集 ...
- URLOS开发基础教程——docker容器的使用方法
URLOS本是基于docker容器运行,在入门URLOS开发之前,我们首先需要掌握docker的相关基础知识,本篇就以docker容器的基本使用方法为例,快速的让大家对docker有一个全面的印象. ...
- Cobalt Strike DLL用于永恒之蓝注入
PDF下载:blob:https://www.52stu.org/9afe109c-f95f-4cb3-a180-90d469a1d001 我们在对存在MS17010的漏洞主机进行DLL注入的时候,一 ...
- 关于虚拟机docker 启动mysql 启动成功但未挂载到端口
首先排查了防火墙和其他权限相关问题 然后检查了mysql 用户权限问题 docker logs 查看日志 正常应该是到3306 问题是我的mysql my.cnf 文件是挂在在本地.当第二次启动容器时 ...
- sublime text3 注册码 (Version 3.0)
-– BEGIN LICENSE -– TwitterInc 200 User License EA7E-890007 1D77F72E 390CDD93 4DCBA022 FAF60790 61AA ...
- C++ Primer 回炉重铸(一)
过去学C++语法都是用的这本C++Primer第五版 说实话,这本书应该是业界用的最多的一本类似于C++语法的百科全书了.. 但是感觉自己学了这么长时间的C++,语法层次还是不够牢固. 比如templ ...
- multivariate_normal 多元正态分布
多元正态分布 正态分布大家都非常熟悉了,多元正态分布就是多维数据的正态分布,其概率密度函数为 上式为 x 服从 k 元正态分布,x 为 k 维向量:|Σ| 代表协方差矩阵的行列式 二维正态分布概率密度 ...
- java web 二维码生成
pom支持: <!-- 二维码支持包 start--> <dependency> <groupId>com.google.zxing</groupId> ...
- js判断设备,跳转app应用、android市场或者AppStore
js移动设备判断方法大全 <!DOCTYPE html> <html> <head> <meta charset="UTF-8" > ...