flask restful 入門級學習

2022-08-20 16:21:13 字數 2957 閱讀 6108

1.安裝

pip install flask

pip install flask-restful

2.書寫規範

狀態碼3.flask-restful外掛程式

flask-restful是乙個專門用來寫restful api的乙個外掛程式。使用他可以快速的整合restful api的後台以及純api的後台中,這個外掛程式可以幫助我們節省很多時間。當然,如果在普通的**中,這個外掛程式就顯得有些雞肋了,因為在普通的網頁開發中,是需要去渲染html**的,而flask-restful在每個請求中都是返回json格式的資料。

1.從flask_restful中匯入api,來建立乙個api物件。2.寫乙個檢視函式,讓他繼承自resource,然後在這個裡面,使用你想要的請求方式來定義相應的方法,比如你 想要將這個檢視只能採用post請求,那麼就定義乙個post方法。3.使用api.add_resource新增檢視與url。

class loginview(resource):

def post(self,username=none):

return

​api.add_resource(loginview,'/login//','/regist/')#對映到url

如果使用flask-restful,那麼定義檢視函式的時候,就要繼承自flask_restful.resource類,然後再根據當前請求的method來定義相應的方法。比如期望客戶端是使用get方法傳送過來的請求,那麼就定義乙個get方法。類似於methodview

注意事項:

endpoint是用來給url_for反轉url的時候指定的。如果不寫endpoint,那麼將會使用檢視的名字的小寫來作為endpoint

add_resource的第二個引數是訪問這個檢視函式的url,這個url可以跟之前的route一樣,可以傳遞引數。並且還有一點不同的是,這個方法可以傳遞多個url來指定這個檢視函式。

如果你想返回json資料,那麼就使用flask_restful的方式。

4.引數解析

flask-restful外掛程式提供了類似wtforms來驗證提交的資料是否合法的包,叫做reqparse。以下是基本用法:

parser = reqparse.requestparser()

parser.add_argument('username',type=str,help='請輸入使用者名稱')

args = parser.parse_args()

add_argument可以指定這個欄位的名字,這個欄位的資料型別等。以下將對這個方法的一些引數做詳細講解:

default:預設值,如果這個引數沒有值,那麼將使用這個引數指定的值。

required:是否必須。預設為false,如果設定為true,那麼這個引數就必須提交上來。

type:這個引數的資料型別,如果指定,那麼將使用指定的資料型別來強制轉換提交上來的值。

choices:選項。提交上來的值只有滿足這個選項中的值才符合驗證通過,否則驗證不通過。

help:錯誤資訊。如果驗證失敗後,將會使用這個引數指定的值作為錯誤資訊。

trim:是否要去掉前後的空格。

其中的type,可以使用python自帶的一些資料型別,也可以使用flask_restful.inputs下的一些特定的資料型別來強制轉換。比如一些常用的:

url:會判斷這個引數的值是否是乙個url,如果不是,那麼就會丟擲異常。

regex:正規表示式。

date:將這個字串轉換為datetime.date資料型別。如果轉換不成功,則會丟擲乙個異常。

在藍圖中,如果使用flask-restful,那麼在建立api了,而是使用藍圖。如果在flask-restful的檢視中想要返回html**,或者是模版,那麼就應該使用api.representation這個裝飾器來定義乙個函式,在這個函式中,應該對html**進行乙個封裝,再返回。示例**如下:

@api.representation('text/html')

def output_html(data,code,headers):

print(data)

# 在representation裝飾的函式中,必須返回乙個response物件

resp = make_response(data)

return resp

​class listview(resource):

def get(self):

return render_template('index.html')

api.add_resource(listview,'/list/',endpoint='list')

入門級演算法

今天我想記錄的是一些關於入門級別的演算法。將乙個字串s對映為乙個整數,使得該整數可以唯一的代表字串s。先假設字串均由大寫字母a z構成,不妨設a z為0 25,即將26個大寫字母對應到了二十六進製制中。按照將二十六進製制轉換為十進位制的思路,即可實現將字串對映為整數的需求。題目 給出n個字串 恰好由...

PKI入門級介紹

隨著電子商務的迅速發展,資訊保安已成為焦點問題之一,尤其是網上支付和網路銀行對資訊保安的要求顯得更為突出。為了能在網際網路上開展安全的電子商務活動,公開金鑰基礎設施 pki,public key infrastructure 逐步在國內外得到廣泛應用。我們是否真的需要 pki pki 究竟有什麼用?...

PKI入門級介紹

隨著電子商務的迅速發展,資訊保安已成為焦點問題之一,尤其是網上支付和網路銀行對資訊保安的要求顯得更為突出。為了能在網際網路上開展安全的電子商務活動,公開金鑰基礎設施 pki,public key infrastructure 逐步在國內外得到廣泛應用。我們是否真的需要 pki pki 究竟有什麼用?...