1. 程式人生 > >Response返回值詳解

Response返回值詳解

return的資訊只能處理 ,元組,字串,和非Response物件

如果是字典,列表,可以得自定義Response這個類,就可以用了。

from flask import Flask,Response,jsonify
import json

app = Flask(__name__)

@app.route('/')
def index():
    return 'xxxxx'

@app.route('/list1/')
def list1():
    return '這是一個字串'#可以顯示


@app.route('/list2/')
def list2():
    return '如果返回的是元組,有3個引數(響應體,狀態嗎,頭部資訊),必須寫兩個',200,{'X-NAME':'zhiliao'}

# @app.route('/list3/')
# def list3():
#     return {'a': 1,'b': 2,'b': '3'}#如果是字典,直接報錯

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


#自定義response

#第一步,匯入Response,Jsonfy,json

#第二步,繼承Response,重寫轉換的類

#第三步,用app初始化

from flask import Flask,Response,jsonify,render_template
import json


app = Flask(__name__)

# 將檢視函式中返回的字典,轉換成json物件,然後返回
# restful-api
class JSONResponse(Response):

    @classmethod
    def force_type(cls, response, environ=None):
        #只有返回的物件不是元組,字串,返回物件的時候才能呼叫這個類
        if isinstance(response,dict):
            response = jsonify(response)
        return super(JSONResponse, cls).force_type(response, environ)

app.request_class=JSONResponse

@app.route('/')
def index():
    return '別急,今年的目標是積累技術'

@app.route('/list1/')
def list1():
    return '這是一個字串'#可以顯示


@app.route('/list2/')
def list2():
    return '如果返回的是元組,有3個引數(響應體,狀態嗎,頭部資訊),必須寫兩個',200,{'X-NAME':'zhiliao'}

@app.route('/list3/')
def list3():
     return {'username': 'zhiliao', 'age': 18}


if __name__ == '__main__':
    app.run(debug=True,port=8000)
不知道為什麼會報錯,'JSONResponse' object has no attribute 'environ'