我有一個 Flask_restful 資源,我將其添加為藍圖資源
class SampleAPI(Resource):
def __init__(self):
self.reqparse = reqparse.RequestParser(bundle_errors=True)
self.reqparse.add_argument('name', type=str, required=False,
help='No name provided',
location='json')
self.reqparse.add_argument('id', type=str, required=False,
help='No id provided',
location='args')
def post(self):
args = self.reqparse.parse_args()
name = args["name"]
# Do something with name
return lf.to_json(), 201
def get(self):
args = self.reqparse.parse_args()
ID = args["id"]
# Do something with ID
return lf.to_json(), 200
當我使用 post 端點時,每個都可以正常作業,因為我正在發送帶有請求的 JSON 正文。但是當我發出 GET 請求時,我收到一個錯誤的請求錯誤 -
{
"message": "The browser (or proxy) sent a request that this server could not understand."
}
我發現,我需要發送一個空的 JSON 正文 - “{}” 請求以使請求正常作業,否則它會拋出上述錯誤請求錯誤。
我需要了解如何在此 GET 請求中使用燒瓶的 flask_restful 擴展來允許no body但也使用和決議引數!reqparse.RequestParser
謝謝!
uj5u.com熱心網友回復:
在 get 請求的情況下,主體不存在,但self.reqparse.parse_args()嘗試訪問它以驗證傳遞的引數的正確性(它訪問它是因為在它創建時指定引數名稱包含在 json身體)。在 get 請求中,引數是在 url 內部而不是 body 內部傳遞的,因此會產生錯誤。
我建議您創建兩個不同的物件:
一個用于發布請求,當您需要從 json 正文中獲取引數時:
self.reqparse = reqparse.RequestParser(bundle_errors=True)
self.reqparse.add_argument('name', type=str, required=False,
help='No name provided',
location='json')
還有一個用于獲取請求,當您需要從 args 獲取引數時:當您需要從 json 主體獲取引數時:
self.reqparse = reqparse.RequestParser(bundle_errors=True)
self.reqparse.add_argument('id', type=str, required=False,
help='No id provided',
location='args')
如果在兩個請求中都需要兩個引數,則創建兩個不同的 type 物件RequestParser,并將兩個所需引數添加到兩者中,'json'在 post 請求的情況下指定為 location ,'args'在 get 請求的情況下指定為
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/533332.html
上一篇:ReactNative:保存發送到AppDelegate上的本地模塊的值
下一篇:如何更新僅存盤更改的記錄?
