跳轉到

指令碼開發 / 響應資料 DFF.RESP

函式的返回值,除了以往直接返回字串、JSON 外,可使用 DFF.RESP(...) 進行細節控制。

引數 型別 必須 / 預設值 說明
data str/dict/list 必須 指定返回的資料
status_code int 200 指定響應狀態碼
content_type str None 指定響應體型別,如 json, text, html
headers dict None 指定 HTTP 響應頭(此處不需要重複填寫 Content-Type
allow_304 bool False 指定為 True 時,允許瀏覽器 304 快取
download str False 指定下載檔名,並將資料作為檔案下載
指定本引數後,content_type 引數不再起效

如果開啟 allow_304,允許瀏覽器 304 快取,可以實現介面效能提升。但也可能會因為快取導致客戶端無法及時從介面獲取最新內容

指定 download 引數後,系統會自動根據副檔名填充 Content-Type,而 content_type 引數會被忽略

常見用例如下:

Python
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
@DFF.API('用例 1')
def case_1():
    '''
    返回一個由函式內生成的 HTML 頁面
    '''
    data = '''<h1>Hello, World!</h1>'''
    return DFF.RESP(data, content_type='html')

@DFF.API('用例 2')
def case_2():
    '''
    返回由函式生成的 JSON 資料
    與 return {"hello": "world"} 等價
    '''
    data = '''{"hello": "world"}'''
    return DFF.RESP(data, content_type='json')

@DFF.API('用例 3')
def case_3():
    '''
    下載由函式生成的檔案,並命名為`article.txt`
    '''
    data = '''Some text'''
    return DFF.RESP(data, download='article.txt')

@DFF.API('用例 4')
def case_4():
    '''
    指定額外的響應頭
    '''
    data = '''<h1>Hello, World!</h1>'''
    headers = {
        'X-Author': 'Tom',
    }
    return DFF.RESP(data, content_type='html', headers=headers)

@DFF.API('用例 5')
def case_5():
    '''
    指定相應程式碼
    '''
    data = '''<h1>No such data</h1>'''
    return DFF.RESP(data, content_type='html', status_code=404)