RESTful API 是什么?
RESTful是一种互联网应用程序的API设计理念:URL定位资源,用HTTP动词(GET,POST,DELETE,DETC)描述操作。简单的说:服务器上每一种资源,比如一个文件,一张图片,一部电影,都有对应的url地址,如果我们的客户端需要对服务器上的这个资源进行操作,就需要通过http协议执行相应的动作来操作它,比如进行获取,更新,删除等。
REST的原则:
(1)资源与URI
(2)统一资源接口
(3)资源的表述
(4)资源的链接
(5)状态的转移
本文基于Python开发,用httpbin模块作为测试服务器来讲解
1.发送get请求
# -*- coding:utf-8 -*- import pprint,requests def main(): response = requests.get( 'http://127.0.0.1:5000/get', params={'foo':'bar'} ) pprint.pprint(response.json()) if __name__ == '__main__': main()
执行后返回结果:
{'args': {'foo': 'bar'},
'headers': {'Accept': '*/*',
'Accept-Encoding': 'gzip, deflate',
'Connection': 'keep-alive',
'Host': '127.0.0.1:5000',
'User-Agent': 'python-requests/2.18.4'},
'origin': '127.0.0.1',
'url': 'http://127.0.0.1:5000/get?foo=bar'}
2.发送post请求
# -*- coding:utf-8 -*- import pprint,requests def main(): response = requests.post( 'http://127.0.0.1:5000/post', params={'foo':'bar'} ) pprint.pprint(response.json()) if __name__ == '__main__': main()
返回结果:
{'args': {},
'data': '',
'files': {},
'form': {'foo': 'bar'},
'headers': {'Accept': '*/*',
'Accept-Encoding': 'gzip, deflate',
'Connection': 'keep-alive',
'Content-Length': '7',
'Content-Type': 'application/x-www-form-urlencoded',
'Host': '127.0.0.1:5000',
'User-Agent': 'python-requests/2.18.4'},
'json': None,
'origin': '127.0.0.1',
'url': 'http://127.0.0.1:5000/post'}
3.发送json格式的post请求
# -*- coding:utf-8 -*- import pprint,requests,json def main(): # 需要指明Content-Type response = requests.post( 'http://127.0.0.1:5000/post', json.dumps({'foo':'bar'}), headers={'Content-Type':'application/json'} ) pprint.pprint(response.json()) if __name__ == '__main__': main()
执行结果:
{'args': {},
'data': '{"foo": "bar"}',
'files': {},
'form': {},
'headers': {'Accept': '*/*',
'Accept-Encoding': 'gzip, deflate',
'Connection': 'keep-alive',
'Content-Length': '14',
'Content-Type': 'application/json',
'Host': '127.0.0.1:5000',
'User-Agent': 'python-requests/2.18.4'},
'json': {'foo': 'bar'},
'origin': '127.0.0.1',
'url': 'http://127.0.0.1:5000/post'}