什么是API及API请求

API是application programming interface的缩写,意为应用程序接口。API是一系列允许程序之间进行交互的规则。开发者在服务器上创建API,并允许客户端与之交互。


剖析请求

什么是请求?

每个URL都是一个请求,而返回来的数据叫做响应

请求的组成

一个请求由以下四个部分组成:

  • 终端(endpoint)
  • 方法(method)
  • 头(headers)
  • 数据或者body

后面会分别进行详细的描述。

发送请求的方法

不同编程语言都有不同的API请求方法,比如:

API请求方法语言
jQuery的Ajax方法JavaScript
Fetch APIJavaScript
Net::HTTPRuby
Python RequestsPython

注意里是发送请求的方法,而不是指请求类型,避免混淆。


什么是终端

终端由三个部分组成:终端根+路径+查询参数,以下分别描述。

终端根

终端的根即我们要访问的URL的开始,亦即某个网址,决定了我们要使用哪一家网站的数据。比如:

路径

在以上终端根后面添加具体的路径/path/to/?则决定了我们能够获取到什么资源或者数据。

比如,要获得geocalculate.com中所有带Linux标签(tag)的文章的一个列表,那么完整的url应该是:

https://www.geocalculate.com/tag/linux/

这里面https://www.geocalculate.com是终端的根,而/tag/linux/是路径。

又如,获取github某个用户的仓库列表的完整url应该是:

https://api.github.com/users/user-name/repos

将user-name替换为真实的用户名即可。

查询参数

查询参数是一些键-值对,可以帮助我们调整我们的请求。

查询参数通常以?号开始,各个键-值对之间使用&号分割。

如:


?query1=value1&query2=value2

比如github获取用户仓库可用的参数有三个:

参数名类型描述
typestring可以是allownermember、默认为owner
sortstring可以是createdupdatedpushedfull_name,默认为full_name
directionstring可以是ascdesc。默认:当使用full_name时为asc,其他为desc

要查看某个用户最近推到仓库中的列表:


https://api.github.com/users/zellwk/repos?sort=pushed

什么是方法

方法是你发送给服务器的请求类型,请求类型有以下5种:

  • GET
  • POST
  • PUT
  • PATCH
  • DELETE

这些方法可以用于读取、创建、更新以及删除。

(详细的作用查看:还没写)

比如要获取某github用户的仓库列表用GET方法:


GET /users/:username/repos
  • :username:用户名,:号表示username是一个变量,替换时连同冒号一起替换。

又比如要创建一个仓库用POST方法:


POST /user/repos

头(headers)

Headers用于为客户端和服务器提供信息,比如用于验证或者提供关于内容(body)的信息。

详细的headers列表参考 HTTP Headers Reference

HTTP的Headers是一些键-值对

下面的header向服务器说明了客户端想要的信息是JSON格式的内容:


"Content-Type:application/json"
  • Content-Type即是一个header的键(Key)
  • application/json则是它的值(value)

比如使用curl向Github API发送上面的HTTP headers


curl -H "Content-Type:application/json" https://api.github.com
  • -H:使用curl发送headers需要在前面加上-H或者--headers

数据(或body)

数据包含了你要发送给服务器的信息。该项内容是在可选的,仅在使用POSTPUTPATCHDELETE等请求时使用。

比如使用curl发送数据时的格式是:


curl -X POST  -d property1=value1
  • -X:curl命令行工具在用POST方法时需要在前面添加-X--request
  • -d:使用curl发送数据时需要的添加的参数,等同于--data

其他人还浏览了:



公众号

关注公众号,获取一手资讯

“ 什么是API及API请求 ” comments 0

评论/回复

电子邮件地址不会被公开。 必填项已用*标注