要使用Python编写一个接口,其入参格式为x-www-form-urlencoded
,你可以使用requests
库。requests
库是一个流行的HTTP库,它使得发送HTTP请求变得非常简单。
下面是一个简单的示例,展示如何使用requests
库发送一个POST
请求,其中包含x-www-form-urlencoded
格式的参数:
import requests def send_request(url, data): # 设置请求头,指定参数的格式为 x-www-form-urlencoded headers = { 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8' } # 使用 requests.post 方法发送 POST 请求 # 参数 url 是请求的 URL,参数 data 是要发送的数据 # 参数 headers 是请求头 response = requests.post(url, data=data, headers=headers) # 输出响应的状态码和内容 print('Status code:', response.status_code) print('Response content:') print(response.text) # 示例用法:发送一个 POST 请求到某个 URL,并包含 x-www-form-urlencoded 格式的参数
url = 'http://example.com/api' # 替换为你要发送请求的 URL
data = { 'key1': 'value1', # 替换为你要发送的参数 'key2': 'value2'
}
send_request(url, data)
在这个示例中,我们定义了一个名为send_request
的函数,它接收两个参数:url
和data
。函数中设置了请求头,指定了参数的格式为x-www-form-urlencoded
,然后使用requests.post
方法发送了一个POST
请求。最后,我们输出了响应的状态码和内容。
在测试网络http接口的时候,最常用的工具有postman,这个工具的下载链接地址如下:
Postman
这里面包含了GET
,POST,
PUT
、DELETE
、HEAD
,patch,options方法
然后接下来,详情讲一讲使用的http协议到底是什么?
HTTP 是一种应用层的协议,通过 TCP,或者是 TLS——一种加密过的 TCP 连接——来发送,当然,理论上来说可以借助任何可靠的传输协议。到目前为止,HTTP协议已经发展到HTTP/3.0版本。然而,现在普遍应用的版本是HTTP/1.1版本,而正在推进的版本是HTTP/2.0版本,未来的版本是HTTP/3.0版本。
其中http1.1里面,主要的工作流程是:客户端向服务端发送一段请求报文,服务端收到后,返回响应报文,客户端对响应内容进行展示。HTTP/1.0 默认为每一对 HTTP 请求/响应都打开一个单独的 TCP 连接。当需要接连发起多个请求时,工作效率相比于它们之间共享同一个 TCP 连接要低。
值得强调的是:一个 HTTP 的请求必定是由客户端发起,服务器端回复响应。服务器在没有接收到请求之前不会发送响应。为了设计一种更匹配 HTTP 的传输层协议,各种实验正在进行中。例如,Google 正在测试一种基于 UDP 构建,更可靠、高效的传输层协议——QUIC
报文(专业名词)是在 HTTP 应用程序之间发送的数据块
<method> <path> <HTTP version>
<headers><entity-body>
这是报文的数据格式:
其中method是指像get,post这一类的方法,path是你的目标http网址,http version就是遵守的版本,headers被叫做首部,里面包含有许多的请求头,bodyapplication/json , image/jpeg , application/zip …单项内容(⽂本或非⽂本都可以),用于 Web Api 的响应或者 POST / PUT 的请求。
URL的结构:包括协议(http://
)、域名(这里的域名是developer.mozilla.org
),或是 TCP 的端口
默认情况下,HTTP 请求是按顺序发出的。下一个请求只有在当前请求收到响应过后才会被发出。由于会受到网络延迟和带宽的限制,在下一个请求被发送到服务器之前,可能需要等待很长时间。
客户端发送http的时候如下所示:
GET /resources/public-data/ HTTP/1.1
Host: bar.other
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:71.0) Gecko/20100101 Firefox/71.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Connection: keep-alive
Origin: https://foo.example
- Content-Type 标头所指定的媒体类型的值仅限于下列三者之一:
text/plain(html,xml等)
multipart/form-data
application/x-www-form-urlencoded
服务器如何响应:
HTTPCopy to Clipboard
HTTP/1.1 200 OK
Date: Mon, 01 Dec 2008 00:23:53 GMT
Server: Apache/2
Access-Control-Allow-Origin: *
Keep-Alive: timeout=2, max=100
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: application/xml
当响应的是附带身份凭证的请求时,服务端必须明确 Access-Control-Allow-Origin
的值,而不能使用通配符“*
”。
参考链接:HTTP 概述 - HTTP | MDN (mozilla.org)