当前位置: 首页 > 知识库问答 >
问题:

Put:PathVariable和RequestParam不能一起工作

欧阳睿范
2023-03-14
@PutMapping(value="/myurl/{param1}", consumes=MediaType.APPLICATION_FORM_URLENCODED_VALUE)
public String myMethod( @PathVariable("param1") Integer param1, @RequestParam("param2") String param2);
curl -X PUT \
  http://localhost:8080/myurl/42 \
  -H 'Accept: application/json' \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  -d 'param2=myparam2value'

{“时间戳”:1553613278534,“状态”:400,“错误”:“错误请求”,“消息”:“必需的字符串参数'param2'不存在”,“路径”:“/MyURL/42”}

我希望PUT的工作就像POST一样,但它似乎不是。

不幸的是,我不能将参数作为QueryParam发送,因此我应该维护相同的请求调用,因为我正在重构一个完全以这种方式工作的现有endpoint。

org.springframework.web.util.ContentCachingRequestWrapper.getParameterValues

共有1个答案

洪楷
2023-03-14

使用-g--data-urlencode:

curl -G -X PUT \
  http://localhost:8080/myurl/42 \
  -H 'Accept: application/json' \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  --data-urlencode 'param2=myparam2value'

从文档中可以看到:

使用此选项时,将使使用-d--data--data-binary--data-urlencode指定的所有数据在HTTPGET请求中使用,而不是在其他情况下使用的POST请求中使用。数据将用分隔符追加到URL。[...]

 类似资料:
  • 当异常发生在CompletableFuture中时,我试图设置一个默认值,我通过如下方法使其工作: 但是,当我试图在不好的事情发生时异常地使用complete来停止CompletableFuture,并按如下方式跟踪异常时,我无法像刚才那样捕捉到异常。 更新日期2018-06-09谢谢您的帮助,@Daniele 在join()之前封闭的句柄按预期工作。但在这种情况下,

  • 我正在试验把杰克逊和龙目岛结合起来。这些是我的课: 这些是我添加到类spth中的JAR: > 龙目岛:https://projectlombok.org/downloads/lombok.jar(1.16.10version) 此外,Netbeans项目被配置为“保存时不编译”、“生成调试信息”、“报告不推荐使用的API”、“跟踪java依赖项”、“Activacte注释处理”和“编辑器中的Act

  • 我有一个控制器,它的GET方法是这样写的: bean是正确的(getter和setter),服务调用返回带有thingId的正确ThingBean,并且显示了我在edit.jsp的JSP页面。 JSP是: 但是,JSP 显示主题和消息的空白值。是的,这些属性上有吸气剂/二传手。 我有一个非常相似的控制器,工作得很好,除了GET - mapped方法的签名中没有@RequestParam。 我在Sp

  • 更改单元格值后,我的不会刷新。我可以双击一个单元格并更改它的值,但是当我按OK或者我点击离开单元格时,值会重置为上一个,这不是更新表。这是我的自定义表模型的代码,我不知道如何更新数据库,因为当我改变单元格的值时,表是从一个db中取出来的。 如果您需要其他东西,例如数据库或表编辑器的代码,请告诉我;)谢谢您的帮助:) --编辑--好的,我已经实现了setValueAt方法,但是当我单击单元格时,它给

  • 更新后反序列化失败。 我将我的微服务从更新到,并将从更新为,从更新为。 JSON字符串- 班级 - 方法调用- 用于反序列化的方法 - 错误 -

  • 我尝试使用和通过Postman发送JSON和多个文件,但它不起作用。有可能在API中同时使用这两个注释吗?