# flask-restful筆記:### 安裝:
flask-restful需要在flask 0.8以上的版本,在python2.6或者python3.3上執行。通過pip install flask-restful即可安裝。
### 基本使用:
1. 從`flask_restful`中匯入`api`,來建立乙個`api`物件。
2. 寫乙個檢視函式,讓他繼承自`resource`,然後在這個裡面,使用你想要的請求方式來定義相應的方法,比如你想要將這個檢視只能採用`post`請求,那麼就定義乙個`post`方法。
3. 使用`api.add_resource`來新增檢視與`url`。
示例**如下:
```python
class loginview(resource):
def post(self,username=none):
return
api.add_resource(loginview,'/login//','/regist/')
```注意事項:
* url還是跟之前的一樣,可以傳遞引數。也跟之前的不一樣,可以指定多個url。
* endpoint是用來給url_for反轉url的時候指定的。如果不寫endpoint,那麼將會使用檢視的名字的小寫來作為endpoint。
### 引數驗證:
flask-restful外掛程式提供了類似wtforms來驗證提交的資料是否合法的包,叫做reqparse。以下是基本用法:
```python
parser = reqparse.requestparser()
parser.add_argument('username',type=str,help='請輸入使用者名稱')
args = parser.parse_args()
```add_argument可以指定這個欄位的名字,這個欄位的資料型別等。以下將對這個方法的一些引數做詳細講解:
1. default:預設值,如果這個引數沒有值,那麼將使用這個引數指定的值。
2. required:是否必須。預設為false,如果設定為true,那麼這個引數就必須提交上來。 3. type:這個引數的資料型別,如果指定,那麼將使用指定的資料型別來強制轉換提交上來的值。
4. choices:選項。提交上來的值只有滿足這個選項中的值才符合驗證通過,否則驗證不通過。
5. help:錯誤資訊。如果驗證失敗後,將會使用這個引數指定的值作為錯誤資訊。
6. trim:是否要去掉前後的空格。
其中的type,可以使用python自帶的一些資料型別,也可以使用flask_restful.inputs下的一些特定的資料型別來強制轉換。比如一些常用的:
1. url:會判斷這個引數的值是否是乙個url,如果不是,那麼就會丟擲異常。
2. regex:正規表示式。
3. date:將這個字串轉換為datetime.date資料型別。如果轉換不成功,則會丟擲乙個異常。
# flask-restful筆記2:對於乙個檢視函式,你可以指定好一些字段用於返回。以後可以使用orm模型或者自定義的模型的時候,他會自動的獲取模型中的相應的字段,生成json資料,然後再返回給客戶端。這其中需要匯入flask_restful.marshal_with裝飾器。並且需要寫乙個字典,來指示需要返回的字段,以及該字段的資料型別。示例**如下:
```python
class profileview(resource):
resource_fields =
@marshal_with(resource_fields)
def get(self,user_id):
user = user.query.get(user_id)
return user
```在get方法中,返回user的時候,flask_restful會自動的讀取user模型上的username以及age還有school屬性。組裝成乙個json格式的字串返回給客戶端。
### 重新命名屬性:
很多時候你面向公眾的欄位名稱是不同於內部的屬性名。使用 attribute可以配置這種對映。比如現在想要返回user.school中的值,但是在返回給外面的時候,想以education返回回去,那麼可以這樣寫:
```python
resource_fields =
```### 預設值:
在返回一些欄位的時候,有時候可能沒有值,那麼這時候可以在指定fields的時候給定乙個預設值,示例**如下:
```python
resource_fields =
```### 複雜結構:
有時候想要在返回的資料格式中,形成比較複雜的結構。那麼可以使用一些特殊的字段來實現。比如要在乙個欄位中放置乙個列表,那麼可以使用fields.list,比如在乙個字段下面又是乙個字典,那麼可以使用fields.nested。以下將講解下複雜結構的用法:
```python
class articleview(resource):
resource_fields = ),
'tags': fields.list(fields.nested()),
'read_count': fields.integer(default=80)
}@marshal_with(resource_fields)
def get(self,article_id):
article = article.query.get(article_id)
return article
```
flask restful使用總結
flask restful是乙個用於快速建立restful api介面的flask擴充套件。使用flask restful可以很快速方便地建立乙個restful風格的介面應用程式。1 安裝 pip install flask restful 2 全部 from flask import flask ...
使用 flask restful 來開發API
在雙十一買了阿里云云小蜜的培訓課程,花了幾天學了一下,不過考了兩次都沒有考過,但是能夠熟練使用雲小蜜來搭建業務了,為了整合一些外部資料,例如天氣,交通,電影啥的,需要封裝處理一下第三方api或者呼叫自己的資料庫。最後的需求就是變成restful api了,可以把這個請求位址直接放到雲小蜜裡邊。res...
Flask RESTful 的介紹和基本使用
flask restful 是乙個 flask 擴充套件,它新增了快速構建 rest api 的支援。環境安裝 終端執行 pip install flask restful文件 點我檢視官方文件 點我檢視中文翻譯 構建restapi 使用 flask restful 構建restapi只需要進行三步...