如何在python中编写接口和请求外部接口,如何在python中编写接口和请求外部接口数据,如何在Python中编写接口和请求外部接口

如何在python中编写接口和请求外部接口,如何在python中编写接口和请求外部接口数据,如何在Python中编写接口和请求外部接口

本文主要介绍如何用Python编写接口和请求外部接口。请求库请求外部接口,根据请求方法分为get请求和post请求。让我们一起来看看边肖的文章,了解更多的细节。

一.请求库介绍。获取请求III。发布请求1。以表格2提交。以json字符串格式3提交。文件上传四。摘要

目录

Python通过请求库请求接口,因此您需要首先通过pip安装请求库。

pip安装请求==2.21.0

#仅使用文件上传。

pip安装请求-工具带==0.9.1

说明:本文编写的接口使用Flask框架。请参考烧瓶框架的使用。

一、引入requests库

以微信授权的接口为例。

接口文档如下:

这是Get请求的接口,返回类型是application/json。

所以请求的代码是:

#导入库

导入请求,json

URL=' https://API . weixin . QQ . com/CGI-bin/token?' grant _ type=client _ credential appid=123 secret=345 '

#请求接口

res=requests.get(url)

#编码返回的内容

content=RES . content . decode(' utf-8 ')

#反序列化json字符串

tokenJson=json.loads(内容)

access _ token=token JSON[' access _ token ']

代码解释:

Res=请求。Get(url)是发起一个Get请求,得到响应值。content=res.content . decode(' UTF-8 ')因为RES . content的默认类型是字节,所以需要解码并转换为str类型。只有转换后才能正确反序列化。TokenJson=json.loads(content)是Json字符串到字典的反向序列。这个物体是字典,

pythonjson的数据类型对应关系如下图所示:

4.access_token=Token JSON[' Access _ Token ']获取密钥为Access _ Token的令牌值。

二、Get请求

Post请求方法也是一种很常见的请求方法。

Post请求的请求类型有三种:

application/x-www-form-urlencoded这是以表单形式提交post请求。应用/JSON;Charset=utf-8这是将请求参数以json字符串格式放入RequestBody的方法。表单数据通常用于上传文件。

下面分别就这三种请求方式来编写请求代码

三、Post请求

请求方:

def post_form_urlencoded():

URL=' http://127 . 0 . 0 . 1:8080/v1/ls/voice/save '

data={ ' dst _ audio ':' 9d 62 ca 66-326 f-4070-9993-5f 89 f 790 DC 68 . wav ' }

res=requests.post(url,data)

content=RES . content . decode(' utf-8 ')

打印(内容)

表单形式提交的post请求只需要将请求参数封装到一个字典dict中并传入即可。这里传入了一个名为dst_audio的参数。不需要设置内容类型。

如果我们请求的接口的域名是https的地址,那么直接写的话就会报错SSLError: HTTPSConnectionPool的问题。

解决的方法是:

res=requests.post(url,data=data,verify=False)

将验证参数设置为False。也就是说,不检查SSL证书。

接收方:

@ma.route('/v1/ls/voice/save ',methods=['POST'])

定义保存():

group_uuid=uuid.uuid1()

dst _ audio=request . values . get(' dst _ audio ')

我的数据={

'视频标识':组标识

}

返回jsonify({'code': 0,' msg ':'成功保存',' data': json_data})

接收表单中的参数只需要通过request.values.get(参数名)获取即可。分别获得多个参数。Route定义接口的路由地址,methods属性指定接口的请求方法。jsonify函数将dict序列化为json字符串,这是flask框架的一个函数。

1.以form表单提交的方式

请求方:

def post_json():

URL=' http://127 . 0 . 0 . 1:8080/v1/ls/JSON '

x_header={

Content-Type“:”应用程序/JSON;charset=utf-8 ',

}

Body=json.dumps({'name ':'张三',' age': 12})

res=requests.post(url,data=body,headers=x_header,timeout=10)

content=RES . content . decode(' utf-8 ')

打印(内容)

对于application/json请求类型的接口,需要通过json.dumps方法将请求参数序列化为json字符串,然后在请求头中将Content-Type指定为application/Json;charset=utf-8 .

调用post方法requests.post (URL,data=body,headers=x _ header)。其中:data指定请求参数,headers指定请求头。超时是指定的10秒超时。

接收方:

@ma.route('/v1/ls/json ',methods=['POST'])

def post_json():

if request.method=='POST ':

json_data_str=request.get_data()。解码(“utf-8”)

JSON _ data=JSON . loads(JSON _ data _ str)

返回jsonify({'code': 0,' msg ':'请求成功',' data': json_data})

接收体中的参数只需要调用request.get _ data()。decode ('UTF-8 ')方法,这里必须解码,否则中文将被编码{'name':' \ U5F20 \ \ U4E09 ',' age': 12}。

2.以json字符串的格式来提交

请求方:

从requests _ tool belt . multipart . encoder导入MultipartEncoder

def post_form_data():

post _ URL=' http://127 . 0 . 0 . 1:8080/v1/ls/upload '

标题={}

多部分编码器=多部分编码器(

字段={

file ':(OS . path . basename(' D:\ \ test . txt ')、open('D:\\test.txt '、' rb ')、' application/octet-stream '),

文件名':'张三'

}

)

头[' Content-Type ']=multipart _ encoder . Content _ Type

post _ response=requests . post(post _ URL,data=multipart_encoder,headers=headers,verify=False)

content=post _ response . content . decode(' utf-8 ')

打印(内容)

表单数据请求类型的接口通常是用于上传文件的接口。我们可以将参数封装到一个MultipartEncoder对象中,在字段中定义一个字典,并在这个字典中传递多个参数。file参数指定要上传的文件,文件的内容由open('D:\\test.txt ',' rb ')方法读取。并将请求类型指定为应用程序/八位字节流。是文件参数名,需要根据接口端的定义传入。

接收方:

@ma.route('/v1/ls/upload ',methods=['POST'])

def post_form_data():

temp _ file=request . files[' file ']

文件名=request.values.get('文件名')

file_path=os.path.abspath(' . '))'/' 'temp.txt '

临时文件保存(文件路径)

返回jsonify({'code': 0,' msg ':'请求成功',' data': file_path})

上传文件的接口通过request.files['file']的方式接收文件。

三个接口的请求结果如下图:

3.文件上传

详细介绍了如何在Python中通过requests库请求外部接口,根据请求方法分为get请求和post请求。根据请求类型,post可以分为application/x-www-form-urlencoded、application/json和form-data。这三种请求类似,只是参数不同。当请求类型为application/x-www-form-urlencoded时,请求参数封装在dict中并传入。当请求类型是application/json时,传入的请求参数需要一个json字符串。当请求类型是表单数据时,请求参数可以封装到MultipartEncoder对象中。

关于如何用Python编写接口和请求外部接口的这篇文章到此为止。关于用Python编写接口和请求外部接口的更多信息,请搜索我们以前的文章或继续浏览下面的相关文章。希望大家以后能多多支持我们!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: