flask-restful使用總結(jié)
Flask-RESTful是一個(gè)用于快速創(chuàng)建RESTful API接口的Flask擴(kuò)展。使用Flask-RESTful可以很快速方便地創(chuàng)建一個(gè)RESTful風(fēng)格的接口應(yīng)用程序。
1、安裝
pip install flask_restful
2、全部代碼
from flask import Flask
from flask_restful import reqparse, abort, Api, Resource
app = Flask(__name__)
api = Api(app)
TODOS = {
'todo1': {'task': 'build'},
'todo2': {'task': 'bui2'},
'todo3': {'task': 'bui3'}
}
parser = reqparse.RequestParser()
parser.add_argument('task')
class Todo(Resource):
def get(self, todo_id):
return TODOS[todo_id]
def delete(self, todo_id):
del TODOS[todo_id]
return '', 204
def put(self, todo_id):
args = parser.parse_args()
task = {'task': args['task']}
TODOS[todo_id] = task
return task, 201
class TodoList(Resource):
def get(self):
return TODOS
api.add_resource(TodoList, '/todos')
api.add_resource(Todo, '/todos/<todo_id>')
if __name__ == '__main__':
app.run(debug=True)
3、代碼說明
1). 初始化
在當(dāng)前程序初始化一個(gè)flask-restful的api實(shí)例:
api = Api(app)
2). 定義資源類
資源類是restful接口的具體實(shí)現(xiàn),需要繼承Resource類。在類中可以定義get、post等符合restful規(guī)范的接口。
class Todo(Resource):
def get(self, todo_id):
return TODOS[todo_id]
def delete(self, todo_id):
del TODOS[todo_id]
return '', 204
def put(self, todo_id):
args = parser.parse_args()
task = {'task': args['task']}
TODOS[todo_id] = task
return task, 201
3). 參數(shù)解析
雖然 Flask 提供了簡單的方法訪問請求數(shù)據(jù), 但是對于表單數(shù)據(jù)處理還是比較麻煩. Flask-RESTful 提供了 reqparse 一種類似 argparse 參數(shù)解析機(jī)制以簡化參數(shù)處理.
parser = reqparse.RequestParser(): reqparse使用RequestParser() 可以從 flask.Request.values,以及 flask.Request.json 解析值。這里創(chuàng)建了一個(gè)解析對象parser。
parser.add_argument('task'):向parser對象中添加你要關(guān)注的命令行參數(shù)和選項(xiàng),每一個(gè)add_argument方法對應(yīng)一個(gè)你要關(guān)注的參數(shù)或選項(xiàng)。
parser.parse_args():調(diào)用parse_args()方法進(jìn)行解析,解析成功之后即可使用。
4). add_argument擴(kuò)展
對于必傳的參數(shù),可以設(shè)置required=True
parser.add_argument('name', type=str, required=True,
help="Name cannot be blank!")
傳多個(gè)值,使用 action='append'
parser.add_argument('name', type=str, action='append')
使用:
curl http://api.example.com -d "Name=bob" -d "Name=sue" -d "Name=joe"
獲取的參數(shù)為:
args = parser.parse_args() args['name'] # ['bob', 'sue', 'joe']
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
基于Python的圖像數(shù)據(jù)增強(qiáng)Data Augmentation解析
這篇文章主要介紹了基于Python的圖像數(shù)據(jù)增強(qiáng)Data Augmentation解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08
深入解析Python中的__builtins__內(nèi)建對象
__builtins__ 是內(nèi)建模塊__builtin__中的對象,使用Python中的內(nèi)建函數(shù)時(shí)會通過__builtins__引導(dǎo),這里我們就來深入解析Python中的__builtins__內(nèi)建對象,需要的朋友可以參考下2016-06-06
基于django ManyToMany 使用的注意事項(xiàng)詳解
今天小編就為大家分享一篇基于django ManyToMany 使用的注意事項(xiàng)詳解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-08-08
Python基礎(chǔ)常用內(nèi)建函數(shù)圖文示例解析
這篇文章主要為大家Python常用內(nèi)建函數(shù),文中通過圖例詳細(xì)的給大家作出了講解分析,有需要的朋友可以借鑒參考下,希望可以有所幫助2021-09-09
Django自定義插件實(shí)現(xiàn)網(wǎng)站登錄驗(yàn)證碼功能
這篇文章主要為大家詳細(xì)介紹了Django自定義插件實(shí)現(xiàn)網(wǎng)站登錄驗(yàn)證碼功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-04-04
Tornado Web Server框架編寫簡易Python服務(wù)器
這篇文章主要為大家詳細(xì)介紹了Tornado Web Server框架編寫簡易Python服務(wù)器,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-07-07
opencv 圖像禮帽和圖像黑帽的實(shí)現(xiàn)
這篇文章主要介紹了opencv 圖像禮帽和圖像黑帽的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07

