1. 程式人生 > >flask獲取post資料

flask獲取post資料

客戶端傳送的是   content={json}型別的資料

伺服器端

@app.route('/', methods = ['POST'])
def eventData():
    assert request.path == '/'
    assert request.method == 'POST'
    print request.values
    print request.form
    return 'request.json'
用request.json,request.data都不行

request.data Contains the incoming request data as string in case it came with amimetype

Flask does not handle.
如果進入的請求資料是 Flask 不能處理的 mimetype ,資料將作為字串存於此。也就是我這個是可以處理的

class flask.Request(environ, populate_request=True, shallow=False)
The request object used by default in Flask. Remembers the matched endpoint and view arguments.

It is what ends up as request. If you want to replace the request object used you can subclass this and set request_class to your subclass.

The request object is a Request subclass and provides all of the attributes Werkzeug defines plus a few Flask specific ones.

form
一個包含解析過的從 POST 或 PUT 請求傳送的表單物件的 MultiDict 。請注意上傳的檔案不會在這裡,而是在 files 屬性中。

args
一個包含解析過的查詢字串( URL 中問號後的部分)內容的 MultiDict 。

values
一個包含 form 和 args 全部內容的 CombinedMultiDict 。

cookies
一個包含請求中傳送的所有 cookie 內容的 dict 。

stream
如果表單提交的資料沒有以已知的 mimetype 編碼,為效能考慮,資料會不經修改儲存在這個流中。大多數情況下,使用可以把資料提供為字串的 data 是更好的方法。流只返回一次資料。

headers
進入請求的標頭存為一個類似字典的物件。

data
如果進入的請求資料是 Flask 不能處理的 mimetype ,資料將作為字串存於此。

files
一個包含 POST 和 PUT 請求中上傳的檔案的 MultiDict 。每個檔案儲存為 FileStorage 物件。其基本的行為類似你在 Python 中見到的標準檔案物件,差異在於這個物件有一個 save() 方法可以把檔案儲存到檔案系統上。

environ¶
底層的 WSGI 環境。

method
當前請求的 HTTP 方法 (POST , GET 等等)

path
script_root
url
base_url
url_root

獲取的資料為

CombinedMultiDict([ImmutableMultiDict([]), ImmutableMultiDict([('content', u'{"appkey":"d0454485bc9b0f2756b8f03ef634fcc2","time":"2014-09-10 08:57:35","acc":"1","activity":".MainActivity","event_identifier":"btn_click","version":"1.0"}')])])
然後通過
data = request.form.getlist('content')
str = data[0]

就獲取了string型別的一個dic

然後考慮將string轉dic就可以了

string轉dic的方法為

str = data[0]
b = eval(str)


b就是dic了

解決了