【问题标题】:REST POST API with path params vs query params [duplicate]带有路径参数与查询参数的 REST POST API [重复]
【发布时间】:2020-07-20 11:50:03
【问题描述】:

我要设计一个 API,这个 API 只需要一个参数就可以插入到 DB 中。 所以 POST 是动词,但我怀疑将作为查询参数或路径参数传递的参数?

@RequestMapping(value = "/users-access/{userId}", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseStatus(HttpStatus.NO_CONTENT)
@ApiOperation("Promotes user access")
public boolean promoteUserAccess(@PathVariable String userId)
        throws BadRequestException, UnAuthorizedException {
      //actions
}

最佳做法是什么?谢谢!

【问题讨论】:

标签: java spring api rest spring-mvc


【解决方案1】:

您应该在请求正文中发送您的数据,如下所示。

@RequestMapping(value = "/users", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseStatus(HttpStatus.NO_CONTENT)
@ApiOperation("Promotes user access")
public boolean promoteUserAccess(@RequestBody Request request)
        throws BadRequestException, UnAuthorizedException {
      //actions
}

public class Request {

  private String userId;  

}

【讨论】:

    【解决方案2】:

    如果该参数旨在引用 资源,则使用 路径参数。 如果该参数旨在过滤资源,则使用查询参数。

    在您的情况下,userId 是指资源,因此您应该将其用作路径参数。

    通常,查询参数用于 GET 请求以排序/过滤资源。例如:

    GET/users?id=5 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-16
      • 1970-01-01
      • 2022-01-11
      • 1970-01-01
      • 2015-07-23
      • 1970-01-01
      • 2012-04-11
      • 2015-09-07
      相关资源
      最近更新 更多