簡體   English   中英

Flask-Restful:如何發送非JSON POST參數?

[英]Flask-Restful: How to send non-json POST argument?

我在使簡單(非json)參數與POST一起使用時遇到問題。 僅以他們的教程中的簡單示例為例 ,我無法對任務作為參數傳遞的位置進行單元測試。 但是,任務永遠不會傳遞。

class TodoList(Resource):
    def __init__(self):
        self.reqparse = reqparse.RequestParser()
        self.reqparse.add_argument('task', type = str)
        super(TodoList, self).__init__()

    def post(self):
        args = self.reqparse.parse_args()
        #args['task'] is None, but why?
        return TODOS[args['task']], 201

單元測試:

def test_task(self):
        rv = self.app.post('todos', data='task=test')
        self.check_content_type(rv.headers)
        resp = json.loads(rv.data)
        eq_(rv.status_code, 201)

我想念什么?

當您使用'task=test' test_client請勿設置application/x-www-form-urlencoded內容類型,因為您將字符串放入輸入流中。 因此,flask無法檢測到表單並從表單讀取數據,因此reqparse對於這種情況下的任何值都將返回None

要修復它,您必須設置內容類型或使用dict {'task': 'test'}或元組。

為了更好地進行請求測試,也可以使用client = self.app.test_client()代替app = self.app.test_client() ,如果使用FlaskTesting.TestCase類,則只需調用self.client.post

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM