国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Flask編寫API的核心思想

阿羅 / 1987人閱讀

摘要:這篇文章,是我的自言自語為什么需要當(dāng)客戶端與服務(wù)器端分離時(shí)需要通過傳遞資源什么是資源即數(shù)據(jù)庫中的數(shù)據(jù)如何表示資源使用的方式表示以鍵值的方式表示一個(gè)資源每一個(gè)鍵代表資源的一個(gè)屬性使用數(shù)組列表表示資源的集合例如如何使用的方式對(duì)資源進(jìn)行操作涉及方

這篇文章,是我的自言自語

Q: 為什么需要API

A: 當(dāng)客戶端與服務(wù)器端分離時(shí), 需要通過API傳遞資源

Q: 什么是資源

A: 即數(shù)據(jù)庫中的數(shù)據(jù)

Q: 如何表示資源

A: 使用json的方式表示, 以鍵值的方式表示一個(gè)資源, 每一個(gè)鍵代表資源的一個(gè)屬性; 使用數(shù)組(列表)表示資源的集合, 例如

[
    {
        "id": 1,
        "username": "neo1218"
    },
    {
        "id": 2,
        "username": "zxc0328"
    }
]
Q: 如何使用HTTP的方式對(duì)資源進(jìn)行操作

A: 涉及HTTP方法映射: 如下表

GET ------> 獲取(集合,特定資源)
POST -----> 創(chuàng)建(特定資源)
PUT ------> 更新(特定資源)
DELETE ---> 刪除(特定資源)
Q: 那么flask編寫API的核心是什么?

A:

1. 提供資源

flask需要把數(shù)據(jù)庫資源通過json的形式提供出去, 所以需要在數(shù)據(jù)庫Model中定義to_json方法, 以
json的形式表示數(shù)據(jù)庫數(shù)據(jù), 以User類為例

class User(db.Model):
    ......
    def to_json(self):
        json_user = {
            "id": self.id,
            "username": self.username
        }
        return json_user
    ......
2. 接受json數(shù)據(jù)

flask需要接受客戶端發(fā)送的json數(shù)據(jù)從而用于創(chuàng)建資源,
所以需要在數(shù)據(jù)庫Model中定義from_json方法

class User(db.Model):
    ......
    @staticmethod
    def from_json(json_data):
        user = User(
            username = json_data.get("username"),
            password = json_data.get("password")
        )
        return user
    ......

并在API代碼中搭配[request.get_json()]()使用

/api/users.py

from flask import request

@api.route("/users/", methods=["POST"])
def create_user():
    user = User.from_json(request.get_json())
    db.session.add(user)
    db.session.commit()
HTTP方法與操作對(duì)應(yīng)

還是以用戶資源為例:

@api.route("/users/", methods=["GET"])
def get_users():
    """獲取用戶資源集合"""
    pass

@api.route("/users//", methods=["GET"])
def get_id_users(id):
    """獲取特定id用戶資源"""
    pass

@api.route("/users/", methods=["GET", "POST"])
def create_user():
    """創(chuàng)建用戶資源"""
    pass

@api.route("/users//", methods=["GET", "PUT"])
def update_id_user(id):
    """更新特定id用戶資源"""
    pass

@api.route("/users//", methods=["GET", "DELETE"])
def delete_id_user(id):
    """刪除特定id用戶"""
    pass
Q: 所以說flask編寫API的核心思想就是以json的方式表示和接收資源并將相應(yīng)操作映射到http方法上從而操縱資源, 是嗎?

A: 你這不是廢話嗎....

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/37770.html

相關(guān)文章

  • Flask Web 測(cè)試驅(qū)動(dòng)開發(fā)最佳實(shí)踐之 Flask 實(shí)例

    摘要:當(dāng)功能越來越復(fù)雜的時(shí)候,你可能修改了一些東西,導(dǎo)致另外一個(gè)功能的不可用,而單元測(cè)試也能保證了原有功能被破壞后能被檢測(cè)出來。 showImg(https://segmentfault.com/img/remote/1460000017081749); 前言 前一篇講到了 TDD 測(cè)試驅(qū)動(dòng)開發(fā)的相關(guān)概念和環(huán)境搭建,這篇就著手開始用TDD方式開發(fā)了。首先這篇需要編寫用戶相關(guān)的API接口,如...

    wuyangnju 評(píng)論0 收藏0
  • 《Python Web開發(fā)》作者Harry Percival:TDD就是微小而漸進(jìn)改變

    摘要:目前就職于,他在各種演講研討會(huì)和開發(fā)者大會(huì)上積極推廣測(cè)試驅(qū)動(dòng)開發(fā)。問很多敏捷教練都表示訓(xùn)練新人做測(cè)試驅(qū)動(dòng)開發(fā)是一件辛苦而進(jìn)度緩慢的事,并且收益也不是很大。首先是開發(fā)的對(duì)話式風(fēng)格。第一個(gè)問題就是測(cè)試套件的速度。 Harry J.W. Percival目前就職于PythonAnywhere,他在各種演講、研討會(huì)和開發(fā)者大會(huì)上積極推廣測(cè)試驅(qū)動(dòng)開發(fā)(TDD)。他在利物浦大學(xué)獲得計(jì)算機(jī)科學(xué)碩士學(xué)...

    Guakin_Huang 評(píng)論0 收藏0
  • 《Python Web開發(fā)》作者Harry Percival:TDD就是微小而漸進(jìn)改變

    摘要:目前就職于,他在各種演講研討會(huì)和開發(fā)者大會(huì)上積極推廣測(cè)試驅(qū)動(dòng)開發(fā)。問很多敏捷教練都表示訓(xùn)練新人做測(cè)試驅(qū)動(dòng)開發(fā)是一件辛苦而進(jìn)度緩慢的事,并且收益也不是很大。首先是開發(fā)的對(duì)話式風(fēng)格。第一個(gè)問題就是測(cè)試套件的速度。 Harry J.W. Percival目前就職于PythonAnywhere,他在各種演講、研討會(huì)和開發(fā)者大會(huì)上積極推廣測(cè)試驅(qū)動(dòng)開發(fā)(TDD)。他在利物浦大學(xué)獲得計(jì)算機(jī)科學(xué)碩士學(xué)...

    k00baa 評(píng)論0 收藏0
  • 使用swagger 生成 Flask RESTful API

    摘要:指定篩選條件選擇合適的狀態(tài)碼應(yīng)答中,需要帶一個(gè)很重要的字段。返回結(jié)果針對(duì)不同操作,服務(wù)器向用戶返回的結(jié)果應(yīng)該符合以下規(guī)范。如果狀態(tài)碼是,就應(yīng)該向用戶返回出錯(cuò)信息。 什么是 RESTful 什么是REST REST(英文:Representational State Transfer,又稱具象狀態(tài)傳輸)是Roy Thomas Fielding博士于2000年在他的博士論文 中提出來的一種...

    printempw 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<