<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 寫一個(gè)友好的 API 還是很重要的

          共 1551字,需瀏覽 4分鐘

           ·

          2020-07-30 17:36


          小帥b今天想跟你聊聊 RESTful API 這玩意,以及如何使用 Python 快速創(chuàng)建你的 API 給別人調(diào)用。

          你應(yīng)該經(jīng)常去調(diào)用過 API ,通過一定的規(guī)則就能快速使用別人提供的服務(wù),比如你想要使用人臉身份證比對(duì),就有相應(yīng)的 API 供你使用:






          然后你只要調(diào)用這個(gè)接口就能快速實(shí)現(xiàn):





          返回結(jié)果:





          這樣做的好處就是,我們?cè)诤蠖酥恍枰峁┙涌?,然后前端不管是手機(jī)、PC、微信小程序等,都可以通過這個(gè)接口實(shí)現(xiàn)具體的功能,這樣的話前后端就可以做到互不 “干涉”,分離部署都可以。

          那么我們?nèi)绾问褂?Python 去實(shí)現(xiàn)類似這樣的 API 接口,提供服務(wù)給別人使用呢?RESTful API 又是個(gè)什么鬼?

          那么接下來就是:


          學(xué)習(xí) python 的正確姿勢



          什么是 RESTful API?


          雖然說 API 你可以自己定制,但是總不能寫成類似這樣的吧:






          往往,前后端程序員的矛盾就此產(chǎn)生...


          前端:




          后端:






          所以,寫一個(gè)友好的 API 還是很重要的,而 RESTful API 就是一種流行且友好的風(fēng)格,它主要用來約束 API 的寫法,讓別人使用起來能感到清晰,簡潔,一目了然,使用方便。

          像這樣:

          我們定義的 URI 需要清晰易于理解,例如:
          ?https://api.fxxkpython.com/shop/products/list?
          這樣我們一眼就能明白這是請(qǐng)求商品數(shù)據(jù)列表。

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

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

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


          Python 如何創(chuàng)建 RESTful API?


          相信你對(duì) Python 的 web 框架有一定的了解:



          (來自視頻號(hào):學(xué)習(xí)python的正確姿勢)




          而今天要給你介紹的是基于 Flask 框架寫的輕量級(jí)額rest API 框架:FlaskRESTful ,它易于使用,寫法和 Flask 類似,你也可以直接在你項(xiàng)目中的 ORM 層中使用它。




          接下來一起看看官方提供的例子,簡單演示一下它的使用。

          導(dǎo)入相應(yīng)的庫,定義類資源,在里面可以使用 http 的 get 、put 方法定義接口,接著通過 api 添加資源即可輕松實(shí)現(xiàn)一個(gè) API 接口:




          運(yùn)行起來:




          訪問:



          剛說了,你只要定義好資源類,在里面可以寫多個(gè) http 的 get、put、post 等方法,比如這里你可以使用 put 來添加 data 數(shù)據(jù)到字典中:




          在這里可以把請(qǐng)求路徑的 todo_id 作為變量,運(yùn)行起來后你就可以往里相應(yīng)的 put 數(shù)據(jù)了:




          使用 get 方法獲?。?/section>



          在 add_resource 中,你可以定義多個(gè)路由指向同一個(gè)類資源中去:





          訪問:




          驗(yàn)證表單數(shù)據(jù)類型,可以使用 reqparse 定義 type:






          這樣當(dāng)用戶提交的不是 int 類型會(huì)直接返回錯(cuò)誤信息:





          當(dāng)你的 API 想要返回一個(gè)對(duì)象的時(shí)候,可能你需要對(duì)對(duì)象中的參數(shù)定義好類型,可以使用 fields 和 marshal_with 進(jìn)行裝飾,像這樣:




          ok,以上就是 FlaskRESTful 的常用操作,更多參數(shù)信息可以到以下鏈接中查看:

          https://flask-restful.readthedocs.io/en/latest/

          你也可以試著就我們上次說的?用 Python 開發(fā)一個(gè) 【個(gè)人計(jì)劃 todolist】?用?FlaskRESTful 改寫一下,體會(huì)一下區(qū)別。

          那么我們下回見咯,peace!






          瀏覽 94
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

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

          手機(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>
                  欧美操B网 | 国产欧美一级片 | 亚洲日韩免费一级无码毛片 | 青青操青青操在线视频免费 | 人人操人人摸人人爱 |