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、代碼說(shuō)明
1). 初始化
在當(dāng)前程序初始化一個(gè)flask-restful的api實(shí)例:
api = Api(app)
2). 定義資源類(lèi)
資源類(lèi)是restful接口的具體實(shí)現(xiàn),需要繼承Resource類(lèi)。在類(lèi)中可以定義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 提供了簡(jiǎn)單的方法訪問(wèn)請(qǐng)求數(shù)據(jù), 但是對(duì)于表單數(shù)據(jù)處理還是比較麻煩. Flask-RESTful 提供了 reqparse 一種類(lèi)似 argparse 參數(shù)解析機(jī)制以簡(jiǎn)化參數(shù)處理.
parser = reqparse.RequestParser(): reqparse使用RequestParser() 可以從 flask.Request.values,以及 flask.Request.json 解析值。這里創(chuàng)建了一個(gè)解析對(duì)象parser。
parser.add_argument('task'):向parser對(duì)象中添加你要關(guān)注的命令行參數(shù)和選項(xiàng),每一個(gè)add_argument方法對(duì)應(yīng)一個(gè)你要關(guān)注的參數(shù)或選項(xiàng)。
parser.parse_args():調(diào)用parse_args()方法進(jìn)行解析,解析成功之后即可使用。
4). add_argument擴(kuò)展
對(duì)于必傳的參數(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']
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Python編程中flask的簡(jiǎn)介與簡(jiǎn)單使用
- Python編程在flask中模擬進(jìn)行Restful的CRUD操作
- python3使用flask編寫(xiě)注冊(cè)post接口的方法
- Flask核心機(jī)制之上下文源碼剖析
- python+flask實(shí)現(xiàn)API的方法
- 詳解Python下Flask-ApScheduler快速指南
- Flask實(shí)現(xiàn)跨域請(qǐng)求的處理方法
- python3 flask實(shí)現(xiàn)文件上傳功能
- Flask實(shí)現(xiàn)圖片的上傳、下載及展示示例代碼
- Python編程flask使用頁(yè)面模版的方法
相關(guān)文章
基于Python的圖像數(shù)據(jù)增強(qiáng)Data Augmentation解析
這篇文章主要介紹了基于Python的圖像數(shù)據(jù)增強(qiáng)Data Augmentation解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08
深入解析Python中的__builtins__內(nèi)建對(duì)象
__builtins__ 是內(nèi)建模塊__builtin__中的對(duì)象,使用Python中的內(nèi)建函數(shù)時(shí)會(huì)通過(guò)__builtins__引導(dǎo),這里我們就來(lái)深入解析Python中的__builtins__內(nèi)建對(duì)象,需要的朋友可以參考下2016-06-06
基于django ManyToMany 使用的注意事項(xiàng)詳解
今天小編就為大家分享一篇基于django ManyToMany 使用的注意事項(xiàng)詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-08-08
Python基礎(chǔ)常用內(nèi)建函數(shù)圖文示例解析
這篇文章主要為大家Python常用內(nèi)建函數(shù),文中通過(guò)圖例詳細(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框架編寫(xiě)簡(jiǎn)易Python服務(wù)器
這篇文章主要為大家詳細(xì)介紹了Tornado Web Server框架編寫(xiě)簡(jiǎn)易Python服務(wù)器,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-07-07
快速解決安裝python沒(méi)有scripts文件夾的問(wèn)題
下面小編就為大家分享一篇快速解決安裝python沒(méi)有scripts文件夾的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-04-04
opencv 圖像禮帽和圖像黑帽的實(shí)現(xiàn)
這篇文章主要介紹了opencv 圖像禮帽和圖像黑帽的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07

