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'}

RESTful API 是什么?

相关推荐