http - 如何构造一个不需要正文的 POST 请求
问题描述
我有一个 HTTP 客户端向POST
服务器发送许多请求。服务器使用201 Created
响应正文响应所有请求。出于我的目的,响应标头就足够了,因为我只对Location
标头感兴趣。我想避免服务器产生响应主体以显着减少网络流量。
根据RFC 7231,...
[...] if one or more resources has been created on the origin server as a
result of successfully processing a POST request, the origin server
SHOULD send a 201 (Created) response containing a Location header [...]
...,因此,我假设,服务器也可以响应,例如204 No Content
,省略正文。
因此我的问题是:是否可以构造一个POST
请求,使服务器204 No Content
以另一种方式响应或省略响应主体?
更新 1:服务器端是一个 Spring Data REST 项目,我可以自由配置它。我知道我可以设置RepositoryRestConfiguration#setReturnBodyOnCreate
为false
,但这会有点过头,因为它会影响所有传入的请求。因此,我更愿意在客户端做出决定。
解决方案
您无法从客户端拉出真正的杠杆来控制服务器是否会响应正文,除非您使用的服务具有允许这样做的特定功能。
服务器可能使用的标头是,Prefer: return=minimal
但如果服务没有明确记录对此的支持,那么这将起作用的可能性很低。
真的,您唯一可以为客户做的事情是:
- 获得响应标头后立即终止 TCP 连接
- 收到标头时终止 HTTP/2 流。
这是一件非常“激烈”的事情,但客户端确实在某些情况下使用这种机制并且它确实有效。但是,如果 POST 响应正文有点小,那么它可能并没有真正产生很大的不同,因为响应可能已经发送。
推荐阅读
- scala - Scala Slick 用户定义的密钥生成序列
- javascript - 更新对象 Javascript 中的单个字段
- javascript - JS编辑CSS像素值
- python - 如何以 Python 方式测试是否在 Python 中使用某个参数调用函数?
- html - 如何在 CSS 中定位圆形图像?
- php - 如何解决未捕获的类型错误:PHP 中不支持的操作数类型....
- reverse-engineering - 将函数符号从 symtab 导出到 dynsym
- javascript - Chartist 插件 tooltip 和 pointlabels 如何自定义
- autohotkey - Autohotkey 使用特殊功能键
- sql - 为了只接收 2015-2021 年之间的数据,我应该添加哪一行代码?