flask-restful的使用


安裝

pip install flask-restful

 

使用

一個最小的flask-restful

from flask import Flask
from flask_restful import Api,Resource
from flask_restful.reqparse import RequestParser
app = Flask(__name__)
api = Api(app)

class HelloWorld(Resource):
    def get(self):
        return {'hello': 'world'}

    def post(self):
       
        data ={
            "msg":"post成功"
        }
        return data

api.add_resource(HelloWorld, '/')

if __name__ == '__main__':
    app.run(debug=True)
run.py

 

參數解析

from flask_restful import Resource
from flask_restful.reqparse import RequestParser

class ProfileListResource(Resource):   
    def post(self):
        parser = RequestParser()
        parser.add_argument('username', type=str,location='json')
        parser.add_argument('pwd', type=str,location='json')
        parser.add_argument('data',type=list, location='json')
        parser.add_argument('data_dic',type=dict, location='json')

        args = parser.parse_args()
        print(args)
        print(type(args))
        username = args.get("username")
        pwd = args.get("pwd")
        data = args.get("data")
        data_dic = args.get("data_dic")
        print(data_dic)
        print(type(data_dic))

        return {"code_Post": 200}
參數解析

add_argument可以指定這個字段的名字,這個字段的數據類型等。

  • default:默認值,如果這個參數沒有值,那么將使用這個參數指定的值。
  • required:是否必須。默認為False,如果設置為True,那么這個參數就必須提交上來。
  • type:這個參數的數據類型,如果指定,那么將使用指定的數據類型來強制轉換提交上來的值。
  • choices:選項。提交上來的值只有滿足這個選項中的值才符合驗證通過,否則驗證不通過。
  • help:錯誤信息。如果驗證失敗后,將會使用這個參數指定的值作為錯誤信息。
  • trim:是否要去掉前后的空格。

輸出字段

  對於一個視圖函數,你可以指定好一些字段用於返回。以后可以使用ORM模型或者自定義的模型的時候,他會自動的獲取模型中的相應的字段,生成json數據,然后再返回給客戶端。這其中需要導入flask_restful.marshal_with裝飾器。並且需要寫一個字典,來指示需要返回的字段,以及該字段的數據類型。

from flask import Flask, render_template, url_for
from flask_restful import Api, Resource, reqparse, inputs  # reqparse 類似WTForms來驗證提交的數據是否合法 ,inputs驗證email,url等數據
from flask_restful import fields, marshal_with      # fields用於輸出字段   marshal_with裝飾器關聯返回字段信息
app = Flask(__name__)
# 用Api來綁定app
api = Api(app)


class ArticleView(Resource):      # 類視圖不同於之前繼承View,這里需要繼承Resource
    resource_fields = {           # 返回字段信息
        'title': fields.String,
        'content': fields.String,
    }
    
    @marshal_with(resource_fields)         # 關聯返回字段信息
    def get(self):
        return {'title': 'abcdefg'}


api.add_resource(ArticleView, '/article/', endpoint='article')  # 類視圖綁定

if __name__ == '__main__':
    app.run(debug=True)
run.py

 

 

 

完整flask項目結構

https://gitee.com/peter_zh/rgzn2003

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM