RESTful 接口教程

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RESTful 接口教程相关的知识,希望对你有一定的参考价值。

参考技术A


我们现实生活中的协议是指相互遵守的规定,单方面违背,协议不成立。

而在互联网交互的过程中,也存在这许多协议,例如 FTP、HTTP、STMP、TCP/IP 等。

而 HTTP 协议则是 web 服务器 和 web 客户端 达成的一种可靠的数据传输协议,通过 HTTP 可以从遍布全世界的 Web 服务器上将 JPEG 图片,html 页面,文本文件,MPEG 电影,WAV 音频文件和其他资源信息块迅速、便捷、可靠地搬移到人们桌面上的 Web 浏览器上去。它能够确保数据在传输的过程当中不会损坏或者产生混乱。这样,对用户来说是个好事,同样对 Internet 应用的开发人员来说也是一件好事。因为我们在开发过程中也不需要担心自己的页面和数据会在传输过程中发生破坏和畸变了。

Web 内容都是 存储在 Web 服务器 上的。Web 服务器所使用的是 HTTP 协议,因此经常会被称为 HTTP 服务器。这些 HTTP 服务器存储了因特网中的数据,如果 HTTP 客户端发出请求的话,它们会提供数据。客户端向服务器发送 HTTP 请求,服务器会在 HTTP 响应中回送所请求的数据。

那么一次请求和响应的过程中发生了什么?

web 服务器是 web 资源的宿主 ,而 web 资源就是我们常见的 web 内容的源头,最简单的 web 资源就是我们服务器中的静态文件:文本文件,HTML 文档,JPEG 图片文件,AVI 文件等等。

当然 web 资源也可以是动态生成的,类似搜索引擎生成的页面,QQ 空间的动态等,总之,所有类型的内容来源都是资源。

因特网上有数千种不同类型的数据类型,HTTP 在传输的过程中为每个传输的数据都打上了名为 MIME 类型的数据类型标签,描述并标记多媒体内容。

web 浏览器请求一个网站的时候往往会发布 多个 HTTP 请求 ,比如我们在浏览一个具有丰富图片的的 web 页面的时候,浏览器会执行一次 HTTP 请求来获取描述页面布局的 HTML,然后发布另外的请求来获取每个嵌入式的图片,这些图片甚至可能位于不同的服务器上。因此,一个 web 页面通常不是单个资源,而是一组资源的集合。

web 服务器会为所有的 HTTP 对象数据附加一个 MIME 类型 ,当浏览器从服务器中取回一个对象的时候,会查看相关的 MIME 类型。看看它是否知道应该如何处理这个对象。对象的类型写在响应的 content-type 头 中;同样,请求的时候浏览器也会告知服务器请求数据类型。

常见的 MIME 类型:

以 application 开头的媒体格式类型:

MIME 参考手册: W3school MINE类型

大部分 URL 都遵循一种标准格式, 这种格式包含三个部分。

URI = Uniform Resource Identifier 统一资源 标志符
URL = Uniform Resource Locator 统一资源 定位符
URN = Uniform Resource Name 统一资源 名称

翻译成人话: URI 是抽象的定义,不管用什么方法表示,只要能定位一个资源,就叫 URI,本来设想的的使用两种方法定位。
1)URL 用地址定位
2)URN 用名称定位

举个例子:去村子找个具体的人(URI)。如果用地址:某村多少号房子第几间房的主人就是 URL, 如果用身份证号 + 名字,去找就是 URN 了。

目前 WEB 上就 URL 流行开了,平常见得 URI 基本都是 URL。

1)HTTP 和 HTTPS 的相同点

2)HTTP 和 HTTPS 的不同之处

3)如何选择 HTTP 和 HTTPS 协议

HTTP 支持几种不同请求和命令,这些命令被称为 HTTP 方法,每条 HTTP 请求报文都包含一个方法。 这个方法会告诉服务器要执行什么动作(获取一个 Web 页面、发送一段信息、删除一个文件等)。

请求方法如下:

状态码分成如下几个系列:

常见的 HTTP 状态码:

从 Web 客户端发往 Web 服务器的 HTTP 报文称为请求报文(request message)。从服务器发往客户端的报文称为响应报文(response message)。

HTTP 报文包括以下三个部分:

以上内容复制自: http://www.cnblogs.com/Joans/p/3956490.html

使用火狐和 chrome 浏览器打开一个网页,找到其中一个网络请求查看报文。

1)协议

2)域名

3)接口版本控制规范

格式规范如下:

更新版本后可以使用 v2、v3 等依次递加。

4)接口路径规范

格式规范如下:

5)接口命名规范

格式规范如下:

6) HTTP 请求方法

格式规范如下:

GET https://api.xxxxx.com/v1/zoos :列出所有动物园
POST https://api.xxxxx.com/v1/zoos :新建一个动物园
GET https://api.xxxxx.com/v1/zoos/ID :获取某个指定动物园的信息
PUT https://api.xxxxx.com/v1/zoos/ID :更新某个指定动物园的信息(提供该动物园的全部信息)
PATCH https://api.xxxxx.com/v1/zoos/ID :更新某个指定动物园的信息(提供该动物园的部分信息)
DELETE https://api.xxxxx.com/v1/zoos/ID :删除某个动物园
GET https://api.xxxxx.com/v1/zoos/ID/animals :列出某个指定动物园的所有动物
DELETE https://api.xxxxx.com/v1/zoos/ID/animals/ID :删除某个指定动物园的指定动物

注意:修改有两个方法 PUT 和 PATCH。

假设 URL 位置有一组数据 UserInfo,包括 UserID、UserName 等 20 个字段
需求:用户修改了 UserName,其他不变
• 采用 PATCH,仅向 URL 提交 UserName 的局部更新请求
• 采用 PUT,必须将所有 20 个字段一并提交到 URL,未提交字段被删除
PATCH 的最主要好处:节省网络带宽

7)接口信息过滤

格式规范如下:
?limit=10:指定返回记录的数量
?offset=10:指定返回记录的开始位置。
?page=2&per_page=100:指定第几页,以及每页的记录数。
?sortby=name&order=asc:指定返回结果按照哪个属性排序,以及排序顺序。
?animal_type_id=1:指定筛选条件

参数的设计允许存在冗余,即允许 API 路径和 URL 参数偶尔有重复。比如, GET /zoo/ID/animals 与 GET /animals?zoo_id=ID 的含义是相同的。

8)请求参数规范

9)接口返回数据

格式规范如下:

status::接口的执行状态

data:接口的主数据

msg:返回成功或者失败的错误信息

返回数据中的状态码、状态信息,常指具体的业务状态,不建议和 HTTP 状态码混在一起。HTTP 状态,是用来体现 HTTP链路状态情况,如:404-Not Found。HTTP 状态码和 JSON 结果中的状态码,并存尚可,用于体现不同维度的状态。

简单的功能如下:

这里不牵扯到任何 Python 和 Pycharm 的教学,不会的童鞋挪步 Python 开发教程。

参考新浪开放平台 https://open.weibo.com ,基本是国内最为标准的 API 文档之一。

动力节点-王妈妈Springboot教程RESTful

第五章 接口架构风格—RESTful

  • 官方下载地址:动力节点官网
  • 视频观看地址

https://www.bilibili.com/video/BV1XQ4y1m7ex

5.1 认识 REST

REST (英文: Representational State Transfer,简称 REST)

一种互联网软件架构设计的风格, 但它并不是标准, 它只是提出了一组客户端和服务器交 互时的架构理念和设计原则, 基于这种理念和原则设计的接口可以更简洁, 更有层次, REST 这个词,是 Roy Thomas Fielding 在他 2000 年的博士论文中提出的。

任何的技术都可以实现这种理念,如果一个架构符合 REST 原则,就称它为RESTFul架构 比如我们要访问一个 http 接口: http://localhost:8080/boot/order?id=1021&status=1 采用 RESTFul 风格则 http 地址为: http://localhost:8080/boot/order/1021/1

5.2 RESTful 的注解

Spring Boot 开发 RESTful 主要是几个注解实现

(1) @PathVariable

获取url 中的数据

该注解是实现RESTFul 最主要的一个注解

(2) @PostMapping

接收和处理 Post 方式的请求

(3) @DeleteMapping

接收 delete 方式的请求,可以使用GetMapping 代替

(4) @PutMapping

接收put方式的请求,可以用PostMapping 代替

(5) @GetMapping

接收 get方式的请求

5.3 RESTful 优点

➢   轻量, 直接基于 http, 不再需要任何别的诸如消息协议

get/post/put/delete 为 CRUD 操作

➢   面向资源, 一目了然,具有自解释性。

➢   数据描述简单, 一般以xml,json 做数据交换。

➢   无状态, 在调用一个接口(访问、操作资源) 的时候, 可以不用考虑上下文, 不用考虑当前状态,极大的降低了复杂度。

➢    简单、低耦合

5.4 注解练习

1. 编写 Controller

创建 MyRestController

application.properties 文件

5.4.2 使用 Postman 模拟发送请求, 进行测试

安装 Postman 测试软件,安装后执行 Postman.exe

使用方式,设置连接和参数,点击“发送”按钮

5.4.3 请求路径冲突

这样的路径访问会失败,  路径有冲突。

解决:设计路径,必须唯一,  路径uri 和 请求方式必须唯一。

5.4.4 RESTful 总结

➢    增 post 请求、删 delete 请求、改 put 请求、查 get 请求

➢    请求路径不要出现动词

例如: 查询订单接口

/boot/order/1021/1 (推荐)

/boot/queryOrder/1021/1 (不推荐)

➢    分页、排序等操作, 不需要使用斜杠传参数

例如: 订单列表接口

/boot/orders?page=1&sort=desc

一般传的参数不是数据库表的字段, 可以不采用斜杠

以上是关于RESTful 接口教程的主要内容,如果未能解决你的问题,请参考以下文章

动力节点-王妈妈Springboot教程RESTful

Spring Boot Hello World (restful接口)例子

视频你们的项目RESTful API设计规范是怎样的?

restful 接口 复杂对象入参

Restful接口

Restful风格接口书写规范