天天看點

request.quest/query_string/params/body等方法介紹

假設url:http://192.168.1.111:8080/api/cluster/group?wzd=111&abc=cc

方法類型:POST,body是{"name":"abc"}

1. request.query

得到一個bottle的FormsDict對象,該對象可以轉化為字典,裡面的内容是:

{"wzd":"111","abc":"cc"},即,是url中後面的參數

2.request.params

也是得到FormsDict對象,轉化為字典後,其内容是:

{"wzd":"111","abc":"cc","{"name":"abc"}":""}

即,其内容包含了url後的參數和值,同時也包含了body中的值,要注意的是,它把body中是以的參數作為一個key存入了。

3.request.body

傳回一個StringIO對象,通過read方法取出的資料是body裡的所有值,不管body裡是不是json該方法都原樣傳回body裡的所有内容。對本例而言是傳回:{"name":"abc"}

4.request.query_string

它得到的是,url中?後面所有的值,最為一個字元串,即:wzd=111&abc=cc

5.request.json

當請求的Content-Type`` 是`application/json的時候,該方法傳回的是body中的json串,如果body中不是json會抛出異常:ValueError: No JSON object could be decoded,對應本例,傳回:{"name":"abc"}

6.request.form

有這麼一個表單:

1

2

3

4

5

<

form

action="/login" method="post">

Username: <

input

name="username1" type="text" />

Password: <

input

name="password1" type="password" />

<

input

value="Login" type="submit">

</

form

>

那麼要擷取username/password有如下方法:

方法一:

username = request.forms.get('username1') # 對應的是Username輸入框中的name屬性

password = request.forms.get('password1') # 對應的是password輸入框中的name屬性

方法二:

username = request.POST.get('username')

password = request.POST.get('password')

并且,上面兩種get方法都可以跟一個預設值,當username或者password不存在的時候傳回設定的預設值,如:username = request.POST.get('username','abc'),當username不存在的時候,傳回abc,如果不設定,傳回none

另外,bottle.request.forms,傳回表單中所有的k,v,即:{“username”:"123","password":"324"}