一杯敬明天,一杯敬过往
说到Web Api,以往我一直使用Django来写,但众所周知Django框架很厚重,用来写web Api未免显得不够简便。虽然Django有一个专门写Api的框架,
Django REST Framework
(适合写比较复杂的Api,后面我会单独成文介绍),但感觉还是偏厚重了点。那么有没有几行代码就能写出一个Api的方案呢?Falcon框架就是为此而生的。(除此之外,Flask等框架也可用来写Api,但个人认为最轻便的就属Falcon了)Falcon是一个构建云Api的高性能Python框架,它鼓励使用REST架构风格,尽可能以最少的力气做最多的事情,简单来说它就是用来写Web Api的,有多简便,往下看了就知道。
Falcon官方文档:http://falcon.readthedocs.io/en/stable/api/request_and_response.html
Falcon开源地址:https://github.com/falconry/falcon
Falcon安装
|
|
Falcon写一个简单的api
新建一个app.py文件,写入以下内容:
运行app.py文件:
运行程序将会在本地监听8000端口,我们可以使用curl或者http工具测试一番:
先发一个GET请求:
尝试发POST请求:
说明:Falcon支持任何类型的请求,比如OPTIONS,PUT,HEAD等,当然前提是需要在app.py代码中定义,定义方式为on_*,比如:on_get、on_post、on_put等。
更复杂一些的api例子,可以参考官网。关于request与response的一些方法,官网有很详细的介绍,这里不再记录。
使用gunicorn代替内置的服务器
使用python app.py的方式运行api,其实是使用了其内置的服务器,类似于django的manage.py。用于生产环境时,通常会使用gunicorn来代替内置的服务器,当然代码也可以简略为:
安装gunicorn
|
|
使用gunicorn
|
|
注意::前的app是指app.py,:后的app是指app.py文件中的app对象。
gunicorn只支持unix(linux、mac),如果是windows用户,可用waitress替代。
关于gunicorn更多的用法,比如指定端口号之类的,可以gunicorn --help
查看帮助。