flask中實(shí)現(xiàn)restful-api
舉例,我們可以創(chuàng)建一個(gè)用于管理任務(wù)(Task)的API。在這個(gè)例子中,我們將有以下API:
-
GET /tasks
: 獲取所有任務(wù) -
POST /tasks
: 創(chuàng)建一個(gè)新的任務(wù) -
GET /tasks/<id>
: 獲取一個(gè)任務(wù)的詳情 -
PUT /tasks/<id>
: 更新一個(gè)任務(wù) -
DELETE /tasks/<id>
: 刪除一個(gè)任務(wù)
在這個(gè)例子中,我們將使用一個(gè)簡(jiǎn)單的內(nèi)存數(shù)據(jù)結(jié)構(gòu)來(lái)存儲(chǔ)任務(wù),而不是使用數(shù)據(jù)庫(kù)。這是代碼:
from flask import Flask, request
from flask_restful import Resource, Api, abort
app = Flask(__name__)
api = Api(app)
# 用于存儲(chǔ)任務(wù)的字典,以ID為鍵
TASKS = {}
def abort_if_task_doesnt_exist(task_id):
if task_id not in TASKS:
abort(404, message="Task {} doesn't exist".format(task_id))
class TaskList(Resource):
def get(self):
return TASKS
def post(self):
task_id = max(TASKS.keys()) + 1 if TASKS else 1
task = {'task': request.json.get('task', "")}
TASKS[task_id] = task
return task, 201
class Task(Resource):
def get(self, task_id):
abort_if_task_doesnt_exist(task_id)
return TASKS[task_id]
def put(self, task_id):
abort_if_task_doesnt_exist(task_id)
task = {'task': request.json.get('task', TASKS[task_id]['task'])}
TASKS[task_id] = task
return task
def delete(self, task_id):
abort_if_task_doesnt_exist(task_id)
del TASKS[task_id]
return '', 204
api.add_resource(TaskList, '/tasks')
api.add_resource(Task, '/tasks/<int:task_id>')
if __name__ == '__main__':
app.run(debug=True)
在這個(gè)例子中,定義了兩個(gè)資源:TaskList
和Task
。TaskList
資源有兩個(gè)方法:GET和POST,分別用于獲取所有任務(wù)和創(chuàng)建新任務(wù)。Task
資源有三個(gè)方法:GET,PUT和DELETE,分別用于獲取,更新和刪除一個(gè)特定的任務(wù)。對(duì)于每一個(gè)方法,我們都需要處理不同的請(qǐng)求和響應(yīng)。
在REST架構(gòu)中,資源(Resource)是一種基本概念。在Web中,一個(gè)資源可以是一件事物或?qū)嶓w,比如用戶、訂單、產(chǎn)品等,可以通過(guò)URI(統(tǒng)一資源標(biāo)識(shí)符)來(lái)唯一標(biāo)識(shí)。每個(gè)資源可以有一個(gè)或多個(gè)表述(Representation),比如JSON或XML等格式的數(shù)據(jù)。通過(guò)HTTP方法(如GET, POST, PUT, DELETE等)可以對(duì)資源進(jìn)行操作。
在Flask-RESTful中,Resource類是定義資源的基礎(chǔ)類,可以通過(guò)繼承這個(gè)類來(lái)創(chuàng)建我們自己的資源。在Resource類中,可以定義各種HTTP方法來(lái)響應(yīng)不同的請(qǐng)求。例如:
from flask_restful import Resource
class MyResource(Resource):
def get(self):
pass
def post(self):
pass
在這個(gè)例子中,創(chuàng)建了一個(gè)名為MyResource
的資源,這個(gè)資源有兩個(gè)方法:GET和POST。當(dāng)我們?cè)贔lask-RESTful的API對(duì)象中添加這個(gè)資源時(shí),API對(duì)象將會(huì)根據(jù)請(qǐng)求的HTTP方法來(lái)調(diào)用相應(yīng)的方法。例如,如果收到一個(gè)GET請(qǐng)求,那么就會(huì)調(diào)用get
方法。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-627730.html
注意,Resource類中的方法名應(yīng)該和HTTP方法名一致。你可以定義以下這些方法:get
, post
, put
, delete
, head
, options
, patch
。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-627730.html
到了這里,關(guān)于flask中實(shí)現(xiàn)restful-api的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!