Docker容器中Falcon应用curl POST传参报500错误求助
问题分析与解决
你的问题主要出在Falcon视图方法的参数定义错误和curl请求格式错误两个地方,具体修正如下:
1. Falcon视图方法参数签名错误
Falcon框架中,on_post方法的标准参数顺序是固定的,必须遵循:
def on_post(self, req, resp, **kwargs):
你现在自定义的参数(expedice、celkem_pracovniku)放在了req和resp前面,导致方法调用时参数不匹配,直接抛出内部异常,返回500错误。
如果是要接收POST请求的表单/JSON参数,应该从req对象中获取。修正后的代码示例:
import falcon class Workers: def on_post(self, req, resp): # 从POST表单数据中获取参数 expedice = req.get_param('expedice') celkem_pracovniku = req.get_param('celkem_pracovniku') # 如果需要接收JSON格式数据,改用以下方式 # data = req.media # expedice = data.get('expedice') # celkem_pracovniku = data.get('celkem_pracovniku') # 直接返回JSON格式响应,无需转字符串 resp.media = { "expedice": expedice, "celkem_pracovniku": celkem_pracovniku } resp.status = falcon.HTTP_OK app = application = falcon.API() app.add_route("/pozice_skladApi/v1/pracovnici", Workers())
2. curl请求格式错误
你当前的curl命令中,-d参数的用法不符合规则,-d需要传递键值对形式的数据,不能直接写两个无键名的值。
发送表单格式数据的正确命令:
# 分两次传递参数 curl -X POST http://localhost:8082/pozice_skladApi/v1/pracovnici -d "expedice=knihy-praha" -d "celkem_pracovniku=10" # 或合并为一个参数 curl -X POST http://localhost:8082/pozice_skladApi/v1/pracovnici -d "expedice=knihy-praha&celkem_pracovniku=10"
发送JSON格式数据的正确命令(需配合代码中JSON接收逻辑):
curl -X POST http://localhost:8082/pozice_skladApi/v1/pracovnici -H "Content-Type: application/json" -d '{"expedice": "knihy-praha", "celkem_pracovniku": 10}'
内容的提问来源于stack exchange,提问作者vojtam
相关产品推荐
相关产品推荐

