spring - 在 Spring Boot Rest 中检索查询参数的正确方法?

标签 spring rest spring-mvc spring-boot

我正在使用 Spring Boot 开发 REST api。我有一个接受 POST 请求的 Controller 。

http://localhost:8085/carride/end-ride

在上面的请求中,我想访问参数ride_transection_id来查找特定的横断面对象以及其他一些值。 所以基本上我有 3 种方法来做到这一点。

1.我可以使用@PathVariable

@RequestMapping(value = "/end-ride", method = RequestMethod.POST)
public ResponseEntity<?> endRide(@PathVariable("ride_transection_id") long ride_transection_id,@RequestBody 
SomeDTORequest someDTORequest ) {
//find transaction using path varibale 

}

2.我可以使用@RequestParam

    @RequestMapping(value = "/end-ride", method = RequestMethod.POST
    public @ResponseBody item getitem(@RequestParam("ride_transection_id") 
    long ride_transection_id,@RequestBody SomeDTORequest someDTORequest ){

    //find transaction using RequestParam varibale 

    }
  • 我可以使用 DTO 对象 SomeDTORequest 并接受具有其他值的 ride_transection_id

    @RequestMapping(value = "/end-ride", method = RequestMethod.POST)
    public ResponseEntity<?> endRide(@RequestBody SomeDTORequest someDTORequest ) {
    //find transaction using path someDTORequest .getID()
    

    }

  • 我有点困惑。只是想问一下访问 ride_transection_id 哪种方法最安全、最正确?

    谢谢

    最佳答案

    您可以使用其中任何一种,但每种方式都是针对特定用途而设计的。

    路径变量: 当您需要使用某个字段访问实体时使用,例如我想访问订单,并且该订单由 id 定义,因此要访问该订单,我需要以下请求 Get/order/{id}

    请求参数: 当您想为特定方法发送特定变量或标志时 例如 Get/orders?is_shipped=true,因此这将获取所有已发货的订单,或者您可能需要特定页面的订单 Get/orders?page=1

    请求正文: 当您需要通过 put 或 patch 请求更新实体时,您将使用实体的 json 表示来更新实体,该表示可以通过请求正文发送 例如 PUT/orders/{id} 正文:{"title": "order_1"} 那么 ID 为 {id} 的订单将更新为新标题

    Spring data rest

    See also

    关于spring - 在 Spring Boot Rest 中检索查询参数的正确方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47392803/

    相关文章:

    java - 如何从@GetMapping spring 注释中排除一些路径?

    java - 我们可以使用 MongoRespository 进行 findByNameAndPassword() 这种类型的查询吗?

    java - 在 MockMvcResultHandlers 中找不到 get() 方法

    java - 如何获取简单的 javax.ws REST 服务 url

    api - RabbitMQ HTTP API 请求 401 未经授权

    java - 无法使用 jsp 文件名作为 RequestMapping 值解析 WEB-INF/文件夹内的 View

    java - Spring Security 用户身份验证不起作用

    java - Spring + MongoDB : potential memory leak messages

    java - 委托(delegate)给不同的 Jersey 资源类

    java - 在 SPRING 中设置 ValidationMessages.properties 的路径