restful接口规范与postman调试工具介绍
最近学习了RESTful接口规范,并用Postman作了介绍,在这里记录一下有关RESTful接口规范:
1.什么是RESTful?
REST:是web服务的一种架构风格;使用HTTP,URI,XML,JSON,HTML等广泛流行的标准和协议;轻量级,跨平台,跨语言的架构设计;它是一种设计风格,不是一种标准,是一种思想。
RESTful:对应的中文是rest式的;Restful web service是一种常见的rest的应用,是遵守了rest风格的web服务;rest式的web服务是一种ROA(The Resource-Oriented Architecture)(面向资源的架构)【推荐:web前端】
RESTful的本质是一种软件构架风格,核心是面向资源,解决的问题:
- 降低开发的复杂性
- 提高系统的可伸缩性
2.SOAP和REST的区别:
SOAP (Simple Object Access Protocol):交换数据一种协议规范,是一种轻量的、简单的、基于XML的协议。
REST (Representational State Transfer):一种软件架构风格,可以降低开发的复杂性,提高系统的可伸缩性。
效率和易用性:
SOAP:由于各种需求不断扩充其本身协议的内容,导致在SOAP处理方面的性能有所下降。同时在易用性方面以及学习成本上也有所增加。
RESTful:由于其面向资源接口设计以及操作抽象简化了开发者的不良设计,同时也最大限度的利用了Http最初的应用协议设计理念。
安全性:
RESTful对于资源型服务接口来说很合适,同时特别适合对于效率要求很高,但是对于安全要求不高的场景。
SOAP的成熟性可以给需要提供给多开发语言的,对于安全性要求较高的接口设计带来便利。
总之:
安全性: SOAP会好于REST;
效率和易用性: REST更胜一筹;
成熟度:总的来说SOAP在成熟度上优于REST。
3.如何设计RESTful API:
资源路径:在RESTful架构中,每个网址代表一种资源,所以网址中不能有动词,只能有名词。一般来说API中的名词应该使用复数。
HTTP动词:对于资源的操作( CURD ) ,由HTTP动词(谓词)表示。
- GET :从服务器取出资源(一项或多项)。
- POST:在服务器新建一个资源。
- PUT:在服务器更新资源(客户端提供改变后的完整资源)。
- DELETE :从服务器删除资源。
我们以动物园(zoo)举个例子(包括各种动物和雇员的信息):
https://api.example.com/v1/zoos //动物园资源 https://api.example.com/v1/animals //动物资源 https://api.example.com/v1/employees //雇员资源
- POST /zoos :新建一个动物园
- GET /zoos/ID :获取某个指定动物园的信息
- PUT /zoos/ID:更新某介指定动物园的信息
- DELETE /zoos/D:删除某个动物园
过滤信息:
- ?limit=10:指定返回记录的数量
- ?offset=10:指定返回记录的开始位置。
- ?page=2&per_page=100:指定第几页,以及每页的记录数。
- ?sortby=name&order=asc:指定返回结果按照哪个属性排序,以及排序顺序。
- ?animal_type_id=1:指定筛选条件
状态码:
- 200 (OK)-如果现有资源已被更改
- 201 ( created )-如果新资源被创建
- 202 ( accepted )-已接受处理请求但尚未完成(异步处理)
- 301 (Moved Permanently )-资源的URI被更新
- 303 ( See Other )-其他(如,负载均衡)
- 400 ( bad request )-指代坏请求
- 404 (not found )-资源不存在
- 406 (not acceptable )-服务端不支持所需表示
- 409 (conflict)-通用冲突
- 412 (Precondition Failed )-前置条件失败(如执行条件更新时的冲突)
- 415 (unsupported media type )-接受到的表示不受支持
- 500 (internal server error )-通用错误响应
- 503 (Service Unavailable )-服务当前无法处理请求
错误处理:
返回的信息中将error作为键名,出错信息作为键值。
{ error: “Invalid API key” }
返回结果:
- GET /collection:返回资源对象的列表(数组)
- GET /collection/resource:返回单个资源对象
- POST /collection:返回新生成的资源对象
- PUT /collection/resource:返回完整的资源对象
- PATCH /collection/resource:返回完整的资源对象
- DELETE /collection/resource:返回一个空文档
4.REST风格的接口测试流程:
我们直接用一张图来介绍吧5.代码编写和Postman测试:
工具:idea,mysql数据库,Postman
数据库表数据:
实体类:
@Data @ApiModel("用户实体类") public class User extends Model<User> implements Serializable { @ApiModelProperty("用户id") @NotNull(message = "用户id不能为空") private Integer id; @NotBlank(message = "用户名不能为空") @ApiModelProperty("用户名") private String name; @Min(1) @Max(100) @ApiModelProperty("用户年龄") private Integer age; @NotEmpty(message = "邮箱不能为空") @ApiModelProperty("用户邮箱") @Email private String email; @ApiModelProperty("0:未删除 1:已删除") @TableLogic private Integer deleted; @NotBlank(message = "密码不能为空") @ApiModelProperty("用户密码") private String password; }
controller层的代码(service层省略):
@Api(tags = "用户管理") @RestController @RequestMapping("/MyWebsite/user") public class UserController { @Autowired private UserServiceImpl userServiceimpl; @ApiOperation(value = "新增用户") @PostMapping public int insertUser(User user) { System.out.println("新增成功"); return userServiceimpl.insertUser(user); } @ApiOperation(value = "修改用户信息") @PutMapping public void updateUser(@RequestBody @Valid User user) { userServiceimpl.updateUser(user); System.out.println("修改成功"); } @ApiOperation(value = "删除用户", notes = "根据id删除用户") @DeleteMapping("/{id}") public int deleteUser(@ApiParam("用户id") @PathVariable @Valid Integer id) { System.out.println("删除成功"); return userServiceimpl.deleteUser(id); } @ApiOperation(value = "查询所有用户") @GetMapping public List<User> allUser() { System.out.println("查询成功"); return userServiceimpl.allUser(); } @ApiOperation(value = "id查询用户") @GetMapping("/{id}") public User selectById(@PathVariable("id") String id) { return userServiceimpl.selectById(id); } }
利用Postman测试(url路径要对应上):
查询所有用户:http://localhost:8081/MyWebsite/user
Header:Content-Type=application/json
Body:空
查询成功!
根据id查询:
查询成功!
新增用户:
查看数据库新增成功!
修改用户信息(修改id为7的姓名和年龄):
查看数据库修改成功!
根据id删除用户:
查看数据库删除成功!(deleted=1)
可能你的是直接删除了整一条数据
当查询或更新或删除不存在的数据时(或者数据不合法),都是执行失败的
还有其他接口,例如删除所有等接口,这里不一一测试了
若有不正确的地方,欢迎指出。
以上是restful接口规范与postman调试工具介绍的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

Flask-RESTful和Swagger:Pythonweb应用程序中构建RESTfulAPI的最佳实践(第二部分)在上一篇文章中,我们探讨了如何使用Flask-RESTful和Swagger来构建RESTfulAPI的最佳实践。我们介绍了Flask-RESTful框架的基础知识,并展示了如何使用Swagger来构建RESTfulAPI的文档。本

Apifox 是 API 文档、调试、Mock、测试一体化协作平台,定位Postman + Swagger + Mock + JMeter。通过一套系统、一份数据,解决多个系统之间的数据同步问题。只要定义好 API 文档,API 调试、API 数据 Mock、API 自动化测试就可以直接使用,无需再次定义;

使用Laravel进行RESTfulAPI开发:构建现代化的Web服务随着互联网的快速发展,Web服务的需求日益增加。而RESTfulAPI作为一种现代化的Web服务架构方式,具备轻量、灵活、易扩展的特点,因此在Web开发中得到了广泛应用。在本文中,我们将介绍如何使用Laravel框架来构建一个现代化的RESTfulAPI。Laravel是PHP语言中

一、RESTful概述REST(RepresentationalStateTransfer)风格是一种面向资源的Web应用程序设计风格,它遵循一些设计原则,使得Web应用程序具有良好的可读性、可扩展性和可维护性。下面我们来详细解释一下RESTful风格的各个方面:资源标识符:在RESTful风格中,每个资源都有一个唯一的标识符,通常是一个URL(UniformResourceLocator)。URL用于标识资源的位置,使得客户端可以使用HTTP协议进行访问。例如,一个简单的URL可以是:http

Django是一个Web框架,可以轻松地构建RESTfulAPI。RESTfulAPI是一种基于Web的架构,可以通过HTTP协议访问。在这篇文章中,我们将介绍如何使用Django来构建RESTfulAPI,包括如何使用DjangoREST框架来简化开发过程。安装Django首先,我们需要在本地安装Django。可以使用pip来安装Django,具体

随着互联网的发展和普及,Web应用程序和移动应用程序越来越普遍。这些应用程序需要与后端服务器进行通信,并获取或提交数据。在过去,常规的通信方式是使用SOAP(简单对象访问协议)或XML-RPC(XML远程过程调用)。然而,随着时间的推移,这些协议被认为过于笨重和复杂。现代应用程序需要更加轻巧和直接的API来进行通信。RESTfulAPI(表现层状态转化AP

如何使用Java开发一个基于RESTful的APIRESTful是一种基于HTTP协议的架构风格,通过使用HTTP协议的GET、POST、PUT、DELETE等方法来实现对资源的操作。在Java开发中,可以使用一些框架来简化RESTfulAPI的开发过程,如SpringMVC、Jersey等。本文将向您详细介绍如何使用Java开发一个基于RESTful的

在当下信息技术不断创新的环境下,RESTful架构风靡于各种常用的WebAPI应用之中,成为了新兴的服务开发趋势。而Beego框架作为Golang中一款高性能、易扩展的Web框架,出于其高效、易用、灵活等优点,被广泛应用于RESTful服务的开发中。下文将从Beego开发RESTful服务的最佳实践的角度,为广大的开发者提供一些参考。一、路由设计在REST
