You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 10:55:19