Python 30 天:第 28 天 -- API

<< 第 27 天 || 第 29 天 >>

第28天

应用程序编程接口(API)

应用程序接口

API代表应用程序编程接口。我们将在本节中介绍的 API 类型将是 Web API。Web API 是定义的接口,企业和使用其资产的应用程序之间通过这些接口进行交互,这也是一个服务级别协议 (SLA),用于指定功能提供者并为其 API 用户公开服务路径或 URL。

在 Web 开发的上下文中,API 被定义为一组规范,例如超文本传输​​协议 (HTTP) 请求消息,以及响应消息结构的定义,通常采用 XML 或 JavaScript 对象表示法 (JSON) ) 格式。

Web API 已经从基于简单对象访问协议 (SOAP) 的 Web 服务和面向服务的架构 (SOA) 转向更直接的表述性状态传输 (REST) 风格的 Web 资源。

社交媒体服务、网络 API 允许网络社区在社区和不同平台之间共享内容和数据。

使用 API,可以将在一个地方动态创建的内容发布和更新到网络上的多个位置。

例如,Twitter 的 REST API 允许开发人员访问核心 Twitter 数据,Search API 为开发人员提供与 Twitter 搜索和趋势数据交互的方法。

许多应用程序提供 API 端点。API 的一些示例,例如 countries APIcat's breed API

在本节中,我们将介绍一个 RESTful API,它使用 HTTP 请求方法来获取、放置、发布和删除数据。

构建API

RESTful API 是一种应用程序接口 (API),它使用 HTTP 请求来获取、放置、发布和删除数据。在前面的章节中,我们了解了 python、flask 和 mongoDB。我们将使用我们获得的知识,使用 Python flask 和 mongoDB 数据库开发 RESTful API。每个具有 CRUD(创建、读取、更新、删除)操作的应用程序都有一个 API 来创建数据、获取数据、更新数据或从数据库中删除数据。

要构建 API,最好了解 HTTP 协议以及 HTTP 请求和响应周期。

HTTP(超文本传输​​协议)

HTTP 是客户端和服务器之间已建立的通信协议。在这种情况下,客户端是浏览器,服务器是您访问数据的地方。HTTP 是一种网络协议,用于传送可以是万维网上文件的资源,无论它们是 HTML 文件、图像文件、查询结果、脚本还是其他文件类型。

浏览器是 HTTP 客户端,因为它向 HTTP 服务器(Web 服务器)发送请求,然后 HTTP 服务器将响应发送回客户端。

HTTP的结构

HTTP 使用客户端-服务器模型。HTTP 客户端打开连接并向 HTTP 服务器发送请求消息,HTTP 服务器返回响应消息,即请求的资源。当请求响应周期完成时,服务器关闭连接。

请求和响应消息的格式相似。两种消息都有

  • 一条初始线,
  • 零个或多个标题行,
  • 空行(即 CRLF 本身),以及
  • 一个可选的消息体(例如一个文件,或查询数据,或查询输出)。

初始请求行(状态行)

初始请求行与响应不同。请求行由三个部分组成,以空格分隔:

  • 方法名(GET, POST, HEAD)
  • 请求资源的路径,
  • 正在使用的 HTTP 版本。例如 GET / HTTP/1.1

GET 是最常见的 HTTP,有助于获取或读取资源,而 POST 是创建资源的常见请求方法。

 初始响应行(状态行)

初始响应行,称为状态行,也由空格分隔的三个部分组成:

  • HTTP版本
  • 给出请求结果的响应状态代码,以及描述状态代码的原因。状态行的示例是:HTTP/1.0 200 OK 或 HTTP/1.0 404 Not Found 注意:

最常见的状态代码是: 200 OK:请求成功,结果资源(例如文件或脚本输出)在消息正文中返回。500 服务器错误 可以在此处找到 HTTP 状态代码的完整列表。也可以在这里找到。

 标头字段

正如您在上面的屏幕截图中看到的,标题行提供了有关请求或响应的信息,或者有关在消息正文中发送的对象的信息。

GET / HTTP/1.1
Host: thirtydaysofpython-v1-final.herokuapp.com
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.79 Safari/537.36
Sec-Fetch-User: ?1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: navigate
Referer: https://thirtydaysofpython-v1-final.herokuapp.com/post
Accept-Encoding: gzip, deflate, br
Accept-Language: en-GB,en;q=0.9,fi-FI;q=0.8,fi;q=0.7,en-CA;q=0.6,en-US;q=0.5,fr;q=0.4

消息正文

HTTP 消息可能在标题行之后发送数据主体。在响应中,这是将请求的资源返回给客户端的地方(消息正文的最常见用法),或者如果出现错误则可能是解释性文本。在请求中,这是将用户输入的数据或上传的文件发送到服务器的地方。

如果 HTTP 消息包含正文,则消息中通常有描述正文的标题行。尤其,

Content-Type: 标头给出正文中数据的 MIME 类型(text/html、application/json、text/plain、text/css、image/gif)。Content-Length: 标头给出了正文中的字节数。

请求方法

GET、POST、PUT 和DELETE 是我们要实现API 或CRUD 操作应用程序的HTTP 请求方法。

  1. GET:GET 方法用于使用给定的 URI 从给定的服务器检索和获取信息。使用 GET 的请求应仅检索数据,不应对数据产生其他影响。

  2. POST:POST 请求用于创建数据并向服务器发送数据,例如使用 HTML 表单创建新帖子、文件上传等。

  3. PUT:用上传的内容替换目标资源的所有当前表示,我们用它来修改或更新数据。

  4. 删除:删除数据

 练习:第 28 天

  1. 了解 API 和 HTTP

 🎉恭喜!🎉

<< 第 27 天 || 第 29 天 >>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

舍不得,放不下

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值