<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Python Flask 開發(fā)網(wǎng)絡(luò)應(yīng)用指南00:創(chuàng)建你的 REST API

          共 2031字,需瀏覽 5分鐘

           ·

          2020-09-13 09:57



          后臺有些朋友希望我寫一寫 Python 后臺開發(fā)相關(guān)的,那么就來寫幾篇關(guān)于 Flask 的使用吧,把你們比較想知道的一些東東說一下,比如怎么使用 Flask 來創(chuàng)建 API,如何使用好 Flask-RESTful,F(xiàn)lask 怎么對接數(shù)據(jù)庫,如何存儲數(shù)據(jù),數(shù)據(jù)怎么渲染,還有就是寫完了應(yīng)用,怎么發(fā)布給別人使用等。

          如果時(shí)間允許的話,我盡量寫的容易理解點(diǎn),你盡量多點(diǎn)點(diǎn)在看和轉(zhuǎn)發(fā),怎么樣?

          第一篇,簡單點(diǎn),那么就來創(chuàng)建你的 API 吧。

          安裝好你的?Flask

          我們知道, Flask 是一個(gè)輕量級的 web 框架,它提供了實(shí)現(xiàn) web 的基礎(chǔ)功能,而我們要做的一些數(shù)據(jù)庫存儲,模板引擎都可以自己擴(kuò)展。

          Flask 本身依賴了這么幾個(gè)庫:click、Werkzeug、Jinja、itsdangerous、MarkupSafe。

          不過我們不用預(yù)先安裝,因?yàn)槲覀冊诎惭b Flask 的時(shí)候,會(huì)自動(dòng)安裝相關(guān)的依賴庫,像這樣:

          pip install?Flask




          這就完事了...




          你的第一個(gè) web 應(yīng)用
          ?
          首先你可以創(chuàng)建一個(gè) myapp.py,然后導(dǎo)入你剛剛安裝的 Flask:





          接著創(chuàng)建一個(gè) Flask 實(shí)例,傳入的參數(shù)為你的模塊名稱,如果是像我們現(xiàn)在只有當(dāng)前這個(gè) py 的話,可以傳入 __name__ ,這樣 Flask 等會(huì)才能識別模塊啟動(dòng)。



          ?

          通常我們在瀏覽器訪問某個(gè)文件的時(shí)候,會(huì)使用?“/” 來訪問相應(yīng)的路徑,比如想要訪問 fxxkpython 網(wǎng)站下的某個(gè)類目資源,我們會(huì)這樣:https://vip.fxxkpython.com/?cat=343

          在 Flask 中,我們可以直接使用 route 裝飾器:





          這樣,我們就可以通過指定的路由,訪問相應(yīng)的資源,可以讓 app 跑起來試試:







          這里將這個(gè) web 應(yīng)用的端口定義為 8888, 那么可以這樣訪問它:





          在瀏覽器中輸入
          http://127.0.0.1:8888/fxxk :






          可以看到我們后臺定義的路由資源就被訪問到了。

          你可以把它當(dāng)做最簡單的網(wǎng)絡(luò)服務(wù)端的應(yīng)用,這時(shí)候你在瀏覽器輸入了鏈接并按下回車后可以?在 Chrome 瀏覽器抓包?試試看你控制臺的輸出。

          我們的服務(wù)端除了可以被簡單的 GET 請求頁面外,也可以接收不同的請求,從而返回相應(yīng)的數(shù)據(jù)或操作,比如 POST、DELETE、PUT、HEAD 等等,我們可以在 FLASK 中根據(jù)具體的情況提供相應(yīng)的方法。

          而這,我們常會(huì)用到 REST API 。


          什么是 REST API



          它主要用來約束 API 的寫法,讓別人使用起來能感到清晰,簡潔,一目了然,使用方便。像這樣:


          我們定義的 URI 需要清晰易于理解,例如:

          https://api.fxxkpython.com/shop/products/list?


          這樣我們一眼就能明白這是請求商品數(shù)據(jù)列表。


          盡量通過 JSON 或者 XML 來傳遞數(shù)據(jù)對象和屬性。?

          ?

          明確的使用 HTTP 方法(例如,get、post、put和delete)。?

          ?

          無狀態(tài),在請求的時(shí)候,服務(wù)端不存儲客戶端的上下文狀態(tài)。

          小帥b,公眾號:學(xué)習(xí)python的正確姿勢使用 Python 寫一個(gè)友好的 API 還是很重要的



          Flask 創(chuàng)建?REST API


          接下來用一個(gè)簡單的示例,給你演示一下 Flask 最常用到的 GET和 POST。

          比如現(xiàn)在我們想要提供按摩會(huì)所的 API。

          這篇先不講數(shù)據(jù)庫相關(guān)的,我們可以用 list 和 dict 來封裝會(huì)所的名稱、具體會(huì)所下的技師員工號碼和價(jià)格的數(shù)據(jù),比如有一家叫做 “超棒休閑會(huì)所”,里面有一位技師 808 號,按摩價(jià)格 666,就可以這樣表示:





          Flask 的?Get 請求

          那么這個(gè)時(shí)候,我們要給前端提供獲取所有會(huì)所數(shù)據(jù)的 API,返回 json 數(shù)據(jù),我們就可以這樣:






          這里我們用到了 jsonify ,它可以將字典轉(zhuǎn)化為 Json,?為了防止中文亂碼,我們可以這樣設(shè)置:






          跑起來看看:





          這樣就得到了 json 數(shù)據(jù)了。


          Flask 的?POST?請求



          接著我們可以提供給前端一個(gè)添加會(huì)所數(shù)據(jù)的 API,使用 POST 請求,后端獲取 json 數(shù)據(jù),然后添加到列表中來:






          我們可以使用 Flask 的 request,通過 get_json 方法就可以得到前端傳來的 json 數(shù)據(jù),并且轉(zhuǎn)化為字典,這樣我們就可以將傳來的數(shù)據(jù)存儲到列表中。

          可以使用 curl 進(jìn)行 POST 請求我們剛剛寫的接口:




          請求成功,我們再來獲取所有數(shù)據(jù)看看:




          可以看到剛剛提交的數(shù)據(jù)也在了。

          ok,我們下回見,peace!


          掃一掃

          學(xué)習(xí) Python 沒煩惱




          下面這按鈕是不是很好看?
          你應(yīng)該懂我意思的吧...
          瀏覽 53
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产三级小视频 | 国产伦理,久久做,天天做 | 亚洲视频大香蕉 | 亚洲精品成人无码熟妇在线 | 插菊花中文网久久久 |