国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python Flask實現restful api service

2020-02-16 10:55:57
字體:
來源:轉載
供稿:網友

一直在用node.js做后端,要逐步涉獵大數據范圍,注定繞不過python,因此決定把一些成熟的東西用python來重寫,一是開拓思路、通過比較來深入學習python;二是有目標,有動力,希望能持之以恒的堅持下去。

項目介紹

用python語言來寫一個restful api service,數據庫使用mysql。因為只做后端微服務,并且ORM的實現方式,采用自動生成SQL的方式來完成,因此選擇了輕量級的flask作為web框架。如此選擇,主要目的是針對中小規(guī)模的網絡應用,能充分利用關系數據庫的種種優(yōu)勢,來實現豐富的現代互聯網應用。

REST的六個特性:

    Client-Server:服務器端與客戶端分離。 Stateless(無狀態(tài)):每次客戶端請求必需包含完整的信息,換句話說,每一次請求都是獨立的。 Cacheable(可緩存):服務器端必需指定哪些請求是可以緩存的。 Layered System(分層結構):服務器端與客戶端通訊必需標準化,服務器的變更并不會影響客戶端。 Uniform Interface(統(tǒng)一接口):客戶端與服務器端的通訊方法必需是統(tǒng)一的。 Code on demand(按需執(zhí)行代碼?):服務器端可以在上下文中執(zhí)行代碼或者腳本

restful api

restful api 的概念就不介紹了。這里說一下我們實現協(xié)議形式:

[GET]/rs/user/{id}/key1/value1/key2/value2/.../keyn/valuen     [POST]/rs/user[/{id}]     [PUT]/rs/user/{id}[DELETE]/rs/user/{id}/key1/value1/key2/value2/.../keyn/valuen

說明:

    rs為資源標識; 第二節(jié),user,會被解析為數據庫表名; 查詢時,id為空或0時,id會被忽略,即為列表查詢; 新建和修改,除接收form表單外,url中的id參數也會被合并到參數集合中; 刪除同查詢。

讓flask支持正則表達式

flask默認路由不支持正則表達式,而我需要截取完整的URL自己來解析,經查詢,按以下步驟很容易完成任務。

    使用werkzeug庫 :from werkzeug.routing import BaseConverter 定義轉換器:
class RegexConverter(BaseConverter):  def __init__(self, map, *args):    self.map = map    self.regex = args[0]
    注冊轉換器 : app.url_map.converters['regex'] = RegexConverter 用正則來截取url : @app.route('/rs/<regex(".*"):query_url>', methods=['PUT', 'DELETE', 'POST', 'GET'])

幾點疑問:

    正則(.*)理論上應該是匹配任何除回車的所有字符,但不知道為什么,在這里不識別問號(?) 我用request.data來取表單數據,為何request.form取不到? '/rs/<regex("."):query_url>'后若加個反斜杠('/rs/<regex("."):query_url>/'),request.data就取不到數據,為什么?

解析json數據

解析json數據很容易,但我需要對客戶端送上來的數據進行校驗,下面是用異常處理又只解析一次的解決方案。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 大埔区| 汨罗市| 旬邑县| 驻马店市| 将乐县| 新疆| 攀枝花市| 安宁市| 开原市| 论坛| 淄博市| 承德市| 宜川县| 泽普县| 南江县| 吉隆县| 城口县| 霍山县| 收藏| 太原市| 阳新县| 二连浩特市| 灵丘县| 商城县| 体育| 博罗县| 天津市| 长顺县| 刚察县| 朝阳区| 古浪县| 宜丰县| 辰溪县| 涿鹿县| 获嘉县| 中宁县| 乌兰察布市| 富顺县| 乐东| 阿拉善左旗| 泰安市|