requests模块访问api接口小记,requests.request、requests.get和requests.post

用了些requests模块,主要是requests.request、requests.get和requests.post

import json
import requests
url='http://localhost:8888/'
response=requests.get(url)




#打印响应内容
print('response.text:',response.text)
print('response.content.decode():',response.content.decode())
print('response.content:',response.content)
print('response.json():',response.json())
print('----------------------------------')
#打印相应内容类类型
print('response.text:',type(response.text))
print('response.content.decode():',type(response.content.decode()))
print('response.content:',type(response.content))
print('response.json():',type(response.json()))
print('----------------------------------')
#判断相应内容是否相等
print(response.text==response.content.decode())
print(response.json()==response.content.decode())
print(json.loads(response.content.decode())==response.json())



运行结果:

response.text: {"name": 1, "age": 18}
response.content.decode(): {"name": 1, "age": 18}
response.content: b'{"name": 1, "age": 18}'
response.json(): {'name': 1, 'age': 18}
----------------------------------
response.text: <class 'str'>
response.content.decode(): <class 'str'>
response.content: <class 'bytes'>
response.json(): <class 'dict'>
----------------------------------
True
False
True

------------------------------------------------------------------------------------------------------------------

关于json方法:

服务端返回内容有限制,不然response.json()方法会报错

客户端代码:

import tornado.ioloop
import tornado.web

class MainHandler(tornado.web.RequestHandler):
    # 定义tornado的get方法
    def get(self):
        # self.write('{"name":1,"age":18}')#可以用json
        # self.write({"name":1,"age":18})#可以用json
        self.write({'name':1,'age':18})#可以用json
        # self.write("{'name':1,'age':18}")#json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 2 (char 1)
        # self.write("{'name':1,'age':18}")#json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
        # self.write("test")#json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
        # self.write('test')#json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
        # self.write([1,2,3])#json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
        # self.write(123)#json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
    #定义tornado的post方法
    def post(self, *args, **kwargs):
        self.write({'name':1,'age':18})#可以用json

def make_app():
    return tornado.web.Application([
        (r"/", MainHandler),
    ])

if __name__ == "__main__":
    app = make_app()
    app.listen(8888)
    tornado.ioloop.IOLoop.current().start()

对比requests.request方法和requests.get、requests.post方法的区别,感觉requests.request就是两这个汇总,手动传方法就行了

import json
import requests
url='http://localhost:8888/'
response=requests.get(url)
response2=requests.request('get',url)
response3=requests.request('post',url)

#判断response和response2
print('response.text:',response.text==response2.text)
print('response.content.decode():',response.content.decode()==response2.content.decode())
print('response.content:',response.content==response2.content)
print('response.json():',response.json()==response2.json())
#判断response和response3
print('response.text:',response.text==response3.text)
print('response.content.decode():',response.content.decode()==response3.content.decode())
print('response.content:',response.content==response3.content)
print('response.json():',response.json()==response3.json())

运行结果:

response.text: True
response.content.decode(): True
response.content: True
response.json(): True
response.text: True
response.content.decode(): True
response.content: True
response.json(): True

这个结果是返回结果完全一样的,但是有api接口返回竟然是随机的。。。

比如天气api的这个接口

代码如下:

import json
import requests

url='http://v.juhe.cn/weather/index'
data={'cityname':'北京','key':'4ddab89a84997b92d16be8451a877a71'}
response=requests.get(url,params=data)
response1 = requests.request('GET', url, params=data)


print(response.json() == response1.json())

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值