新聞中心
Web API 的工作通常與 HTTP 動(dòng)詞緊密相關(guān),所以這使得實(shí)現(xiàn)這樣一個(gè)基于 ?MethodView? 類(lèi)的 API 很有意義。也就是說(shuō),你會(huì)注意到 大多數(shù)時(shí)候, API 需要不同的 URL 規(guī)則來(lái)訪問(wèn)相同的方法視圖。譬如,想象一種 情況,你在 web 上暴露一個(gè)用戶(hù)對(duì)象:

創(chuàng)新互聯(lián)建站專(zhuān)注于連山網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供連山營(yíng)銷(xiāo)型網(wǎng)站建設(shè),連山網(wǎng)站制作、連山網(wǎng)頁(yè)設(shè)計(jì)、連山網(wǎng)站官網(wǎng)定制、重慶小程序開(kāi)發(fā)公司服務(wù),打造連山網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供連山網(wǎng)站排名全網(wǎng)營(yíng)銷(xiāo)落地服務(wù)。
| URL | HTTP 方法 | 描述 |
/users/ | GET | 獲得全部用戶(hù)的列表 |
/users/ | POST | 創(chuàng)建一個(gè)新用戶(hù) |
/users/ | GET | 顯示某個(gè)用戶(hù) |
/users/ | PUT | 更新某個(gè)用戶(hù) |
/users/ | DELETE | 刪除某個(gè)用戶(hù) |
那么,你會(huì)想用 ?MethodView? 做什么?訣竅是利用你可以 對(duì)相同的視圖提供多個(gè)規(guī)則的事實(shí)。
讓我們假設(shè)這時(shí)視圖看起來(lái)是這個(gè)樣子:
class UserAPI(MethodView):
def get(self, user_id):
if user_id is None:
# return a list of users
pass
else:
# expose a single user
pass
def post(self):
# create a new user
pass
def delete(self, user_id):
# delete a single user
pass
def put(self, user_id):
# update a single user
pass
如此,我們?cè)鯓影阉鼟燧d到路由系統(tǒng)中?添加兩條規(guī)則,并且為每條規(guī)則顯式地 指出 HTTP 方法:
user_view = UserAPI.as_view('user_api')
app.add_url_rule('/users/', defaults={'user_id': None},
view_func=user_view, methods=['GET',])
app.add_url_rule('/users/', view_func=user_view, methods=['POST',])
app.add_url_rule('/users/', view_func=user_view,
methods=['GET', 'PUT', 'DELETE'])
如果你有許多看起來(lái)類(lèi)似的 API ,你可以重構(gòu)上述的注冊(cè)代碼:
def register_api(view, endpoint, url, pk='id', pk_type='int'):
view_func = view.as_view(endpoint)
app.add_url_rule(url, defaults={pk: None},
view_func=view_func, methods=['GET',])
app.add_url_rule(url, view_func=view_func, methods=['POST',])
app.add_url_rule('%s<%s:%s>' % (url, pk_type, pk), view_func=view_func,
methods=['GET', 'PUT', 'DELETE'])
register_api(UserAPI, 'user_api', '/users/', pk='user_id') 分享文章:創(chuàng)新互聯(lián)Flask教程:Flask用于API的方法視圖
文章鏈接:http://fisionsoft.com.cn/article/dhddshh.html


咨詢(xún)
建站咨詢(xún)
