我有一个使用 Krakend 网关部署的 Django 应用程序。所有端点均处于活动状态。但该服务无法访问请求数据。
我提出以下要求
curl --location 'https://backend-dev-url.com/api' \
--header 'Content-Type: application/json' \
--data '{
"a":"value",
"b":"value"
}'
这是我得到的回复
{
"a": [
"This field is required."
],
"b": [
"This field is required."
]
}
我正确传递了所有缺失的变量。但不知何故它没有到达服务。它在本地主机上完美运行。问题仅与已部署的实例有关。
下面是这个微服务的 krakend 配置部分
{
"endpoint": "api/v1",
"method": "POST",
"output_encoding": "no-op",
"backend": [
{
"url_pattern": "api/v1",
"encoding": "no-op",
"sd": "static",
"method": "POST",
"host": ["http://localhost:8000"],
"disable_host_sanitize": false
}
],
"input_headers": ["Authorization","Content-Type"],
"extra_config": {
"qos/ratelimit/router": {
"max_rate": 100,
"client_max_rate": 60,
"every": "1m",
"strategy": "ip"
}
}
}
谢谢。
网关不会操作或过滤有效负载,除非您添加执行此操作的组件,因此,如果您发送
--data
,它会按原样到达服务。问题出在其他地方。
我发现您通过的配置有些不一致。
curl
调用端点 /api
,但您的配置声明 /api/v1
。因此,要么您在此处粘贴了错误的配置,要么请求将无法到达您期望的位置localhost:8000
。如果您使用不同的机器或 Docker 容器,则必须将此主机更新为正确的主机。