【问题标题】:Spring REST - Deserializing object from GET request querySpring REST - 从 GET 请求查询中反序列化对象
【发布时间】:2019-05-21 14:20:00
【问题描述】:

我正在尝试实现一个端点,该端点从请求参数中获取序列化对象并将其反序列化为 POJO。有没有一种简单的方法可以用 Spring 做到这一点?

查询示例: http://localhost/routes/departures?trip=%7B%22stopId%22:%22U321Z102%22,%22routeId%22:%22L991D1%22,%22headSign%22:%22Nemocnice+Motol%22%7D 应该翻译成这样:

trip: {"stopId":"U321Z102","routeId":"L991D1","headSign":"Nemocnice Motol"}

此外,这些参数值可能包含空格和特殊字符 (ěščř...)。 Spring会处理这个吗?或者我可以单独发送这些参数而不是序列化,但我担心这会是一个问题。

【问题讨论】:

  • 您使用什么工具将字符串反序列化为 JSON?显示代码

标签: spring spring-rest spring-web


【解决方案1】:

您需要使用post请求发送用户(发送一个与后端具有相同类型和属性名称的userDTO)

你的休息控制器看起来像这样

    @PostMapping("/users")
    @PreAuthorize("hasRole(\"" + AuthoritiesConstants.ADMIN + "\")")
    public ResponseEntity<User> createUser(@Valid @RequestBody UserDTO userDTO)      throws URISyntaxException {
    log.debug("REST request to save User : {}", userDTO);

【讨论】:

  • 感谢您的回答。在我的例子中,POST 请求会违反约定,因为端点仅用于根据序列化对象中的参数检索数据。我决定改用普通参数发送查询,编码为 URL 并使用java.net.URLDecoder 解码。但是我仍然有兴趣寻找是否有办法按照我最初计划的方式反序列化。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多