2013-07-14 11 views
5

Flask'ın istekte bulunan içerik türü request.data boş bir dizeye ayarlandığını gösterir. application/x-www-form-urlencoded. Ben bir JSON vücut isteği kullanıyorum çünkü ben sadece json ayrıştırmak ya da ayrıştırmak ve request.json dönmek için Flask zorlamak istiyorum. AJAX içerik türü değişen arka uç komplike bir HTTP isteği İSTEĞE BAĞLI, zorlar çünküFlask - İçerik türü "application/x-www-form-urlencoded" olduğunda hammaddeyi POST isteğinde nasıl okurum?

bu gereklidir.

nasıl Matara isteği nesnesinde ham verileri döndürmek yapmak mı? İçerik türü application/x-www-form-urlencoded ise

cevap

7

Sen request.form.keys()[0] aracılığıyla sonrası verilerini alabilirsiniz.

request.form olan anahtarlar ayrıştırılmış sonrası verileri içeren bir multidict vardır. Eğer istek 'Content-Type' olduğunda JSON almak istiyorsanız

+0

da bizim bir yazının veri şişe almak için bir yol olduğunu görünüyor. Sadece request.form.keys() [0] ile 'list (request.forms.keys()) [0]' arasında değişiklik yapın. Sonunda hata ayıklama saatlerini çözdüğünüz için teşekkürler! –

+0

Neden çalışıyor? Görünüşe göre, vücuttan ayrılan sözlüğün sadece ilk anahtarı olmalı, ama bir şekilde tüm vücudu geri veriyor? – max

+0

Birisi, verilerin neden form anahtarlarına konulduğunu açıklayabilir mi? –

1

: 'application/x-www-form-urlencoded' aşağıdaki de kodu gibi json için "kuvvet" dönüşüm gerekir:

from flask import Flask, request 


app = Flask(__name__) 


@app.route("/my-endpoint", methods = ['POST']) 
def myEndpoint(): 

    requestJson = request.get_json(force=True) 

    //TODO: do something.... 

    return requestJson 


if __name__ == "__main__": 
    port = int(os.environ.get('PORT', 5000)) 
    app.run(host='0.0.0.0', port=port, debug=True, use_reloader=True) 
1

POST verisini almak için request.get_data() kullanın. Bu, verilerin içerik türü veya application/octet-stream'dan bağımsız olarak çalışır.

İlgili konular