应用程序接口API是允许程序相互通信的一组定义和协议。术语REST的意思是表述性状态转移(representational state transfer)。 它是一种架构方式,由约束集合组成,可在创建Web服务时使用。
RESTful API是遵循REST体系结构的API。 通常,REST API使用HTTP协议发送和检索数据以及JSON格式的响应。 您可以使用标准的HTTP方法创建,查看,更新或删除资源。
要测试RESTful API并与之交互,可以使用任何可以发出HTTP请求的库或工具。
API请求由四个不同部分组成:
- 端点。 这是客户端用于与服务器通信的URL。
- HTTP方法。 它告诉服务器端要执行什么操作。 最常见的方法是
GET
,POST
,PUT
,DELETE
和PATCH
- headers。 用于在服务器和客户端之间传递其他信息,例如授权。
- body正文。 发送到服务器的数据。
在本教程中,我们将讨论如何使用curl
与RESTful API进行交互。 curl
是一个命令行程序,用于从远程服务器或向远程服务器传输数据。 默认情况下,它已安装在macOS和大多数Linux发行版上。我们还讨论如何使用curl发送HTTP GET请求,发送HTTP POST请求,发送HTTP PUT请求,发送HTTP PUT修改资源,发送HTTP DELETE请求等常见http方法。也探讨如何使用curl进行身份验证。
Curl选项
curl
命令的语法如下:
curl [options] [URL...]
以下是我们在发出请求时使用的选项:
-X
,--request
-要使用的HTTP方法。-i
,--include
-包含headers。-d
,--data
-要发送的数据。-H
,--header
-要发送的附加headers。
如何使用curl发送HTTP GET请求
GET方法从服务器请求特定资源。使用curl
进行HTTP请求时,GET是默认方法。 这是从 JSONPlaceholder获取所有文章的返回json的示例。
API发出GET请求的示例:
curl https://jsonplaceholder.typicode.com/posts
要过滤结果,请使用query查询参数:
curl https://jsonplaceholder.typicode.com/posts?userId=1
如何使用curl发送HTTP POST请求
POST方法用于在服务器上创建资源。 如果资源存在,则将其覆盖。
以下命令使用-d
选项指定要发送的数据并发出POST请求:
curl -X POST -d "userId=5&title=Hello World&body=Post body." https://jsonplaceholder.typicode.com/posts
使用Content-Type
header指定请求正文的类型。 默认情况下,未指定此header标头时,curl
使用Content-Type: application/x-www-form-urlencoded
。-d
指定要发送JSON格式的数据,请将boyd主体正文类型设置为application/json
:
curl -X POST -H "Content-Type: application/json" \
-d '{"name": "linuxize", "email": "freax@myfreax.com"}' \
https://example/contact
如何使用curl发送HTTP PUT请求
PUT方法用于更新或替换服务器上的资源。 它将指定资源的所有数据替换为请求发送的数据。
curl -X PUT -d "userId=5&title=Hello World&body=Post body." https://jsonplaceholder.typicode.com/posts/5
如何使用curl发送HTTP PUT修改资源
PUT方法也可用于对服务器上的资源进行部分更新。
curl -X PUT -d "title=Hello Universe" https://jsonplaceholder.typicode.com/posts/5
如何使用curl发送HTTP DELETE请求
DELETE方法从服务器中删除指定的资源。
curl -X DELETE https://jsonplaceholder.typicode.com/posts/5
如何使用curl进行身份验证
如果API端点需要身份验证,则需要先获取访问密钥。 否则,API服务器将以“Access Forbidden”或“Unauthorized”响应消息进行响应。
获取访问密钥的过程取决于您使用的API。 获得访问令牌后,您可以在header中发送它:
curl -X GET -H "Authorization: Bearer {ACCESS_TOKEN}" "https://api.server.io/posts"
结论
我们向您展示了如何使用curl
发出测试API请求。 有关curl
的更多信息,请访问 Curl文档页面。如果您有任何问题或反馈,请随时发表评论。