指令碼開發 / 響應資料 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)
|