iT邦幫忙

2022 iThome 鐵人賽

DAY 20
0
Software Development

燃燒大三的成果發表系列 第 20

燃燒大三的成果發表第二十天 - Flask-RESTX(下)

  • 分享至 

  • xImage
  •  

大家好,昨天介紹到新增完namespace以及model的畫面,接下來我們要往更細部更細節的地方來介紹,首先我們來介紹一下底下這部分的程式碼吧。

add_payload = add_ns.model('數字加總', {
    'number one': fields.Integer(default=1),
    'number two': fields.Integer(default=2)
})

add_output = add_ns.model('數字加總結果', {
    'number total': fields.Integer(default=3)
})

model這部分的程式碼,會對應到底下這張圖片

點開來之後,就可以看到對於model的描述以及變數名稱、資料類型,跟程式碼比對一下一清二處,只是field有很多用法,有Integer也有基本的String、list,甚至還有比較複雜的Nested......等等,這邊我不一一嘗試給大家看,有興趣的夥伴可以到官方文件看更多。

接下來我們來看看這部分程式碼對應的部分

@add_ns.route('/add')
class Add(Resource):
    @add_ns.expect(add_payload)
    @add_ns.marshal_with(add_output)
    def post(self):
        data = add_ns.payload
        x = data["number one"]
        y = data["number two"]
        result = x+y
        print(result)
        return result

從最上面那欄往下看,我們可以先看到http method跟url,http method是根據我們定義的方法名稱而改變,使用route定義url,expect可以根據我設計的model展示Parameters,marshal_with可以根據我設計的model展示Responses。

我們描述完之後還能夠利用swagger做測試,先點一下「Try it out」

再點一下「Execute」

會在預期的Responses上面又出現一個,這就是我們的結果,我們可以看到我們發送請求api完整的url,回傳http method & http status以及回傳的資料

大致上都有稍稍理解之後,相信你也大概看得懂namespace在幹嘛了吧~~ 如果我在新建一個namespace的話會長這樣。

又多了一個雙胞胎兄弟test_namespace,基本上這就可以拿來區分不同架構、類別的api,雖然我不是什麼很強的軟體工程師,但是這看起來挺讚的吧。

那麼今天就告一段落啦~~ 明天我要來介紹celery & redis


上一篇
燃燒大三的成果發表第十九天 - Flask-RESTX(上)
下一篇
燃燒大三的成果發表第二十一天 - redis & celery & docker(中)
系列文
燃燒大三的成果發表30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言