在 Openshift 上调用时,HTTP DELETE 端点丢失正文数据
Http DELETE endpoint losing body data when called on Openshift
我在 Openshift 上向我的服务 运行 添加了一个 v1/health_check
端点。端点接受所有 http 动词和 returns 请求中的内容。
例如,运行:
curl -X DELETE -G 'http://localhost:8080/v1/health_check' -F "user_id=1" -F "build_category_id=14" -F "notification_type=slack"
在本地 运行 时反对服务 returns:
{
"endpoint": "/v1/health_check",
"form_data": {
"build_category_id": "14",
"notification_type": "slack",
"user_id": "1"
},
"http_method": "DELETE",
"request_data": {}
}
当我对 Openshift 上 运行 的服务使用相同的 curl 请求时,我得到:
{
"endpoint": "/v1/health_check",
"form_data": {},
"http_method": "DELETE",
"request_data": {}
}
有人知道为什么 DELETE
方法的主体在 Openshift 中丢失了吗?
其他说明:
- 这是一个使用
gevent.wsgi
WSGIServer
的烧瓶服务
- 经过一些研究,我也承认这不是最 RESTful 的方法,尤其是在阅读
之后
- 当我 rsh 到 Openshift pod 并 curl 服务时,端点按预期工作,这意味着实体主体通过。
不要同时使用 -X DELETE
和 -G
选项。 -G
选项表示使用 HTTP GET。 -X DELETE
表示对 HTTP 方法使用 DELETE
。
我在 MacOS X 上的测试表明同时使用两者会造成混淆 curl
,导致它实际上不会发送请求内容。
$ curl -v --request DELETE -G --data xxx http://.../
* Trying 52.87.56.37...
* Connected to ... (52.87.56.37) port 80 (#0)
> DELETE /?xxx HTTP/1.1
> Host: ...
> User-Agent: curl/7.43.0
> Accept: */*
>
< HTTP/1.1 200 OK
...
我在 Openshift 上向我的服务 运行 添加了一个 v1/health_check
端点。端点接受所有 http 动词和 returns 请求中的内容。
例如,运行:
curl -X DELETE -G 'http://localhost:8080/v1/health_check' -F "user_id=1" -F "build_category_id=14" -F "notification_type=slack"
在本地 运行 时反对服务 returns:
{
"endpoint": "/v1/health_check",
"form_data": {
"build_category_id": "14",
"notification_type": "slack",
"user_id": "1"
},
"http_method": "DELETE",
"request_data": {}
}
当我对 Openshift 上 运行 的服务使用相同的 curl 请求时,我得到:
{
"endpoint": "/v1/health_check",
"form_data": {},
"http_method": "DELETE",
"request_data": {}
}
有人知道为什么 DELETE
方法的主体在 Openshift 中丢失了吗?
其他说明:
- 这是一个使用
gevent.wsgi
WSGIServer
的烧瓶服务
- 经过一些研究,我也承认这不是最 RESTful 的方法,尤其是在阅读 之后
- 当我 rsh 到 Openshift pod 并 curl 服务时,端点按预期工作,这意味着实体主体通过。
不要同时使用 -X DELETE
和 -G
选项。 -G
选项表示使用 HTTP GET。 -X DELETE
表示对 HTTP 方法使用 DELETE
。
我在 MacOS X 上的测试表明同时使用两者会造成混淆 curl
,导致它实际上不会发送请求内容。
$ curl -v --request DELETE -G --data xxx http://.../
* Trying 52.87.56.37...
* Connected to ... (52.87.56.37) port 80 (#0)
> DELETE /?xxx HTTP/1.1
> Host: ...
> User-Agent: curl/7.43.0
> Accept: */*
>
< HTTP/1.1 200 OK
...