RESTful 接口教程
我们现实生活中的协议是指相互遵守的规定,单方面违背,协议不成立。
而在互联网交互的过程中,也存在这许多协议,例如 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 文档之一。
2024-10-28 广告