@PathParam 和 @PathVariable 有什么区别[已关闭]

问题描述 投票:0回答:7

据我所知,两者都有相同的目的。除了

@PathVariable
来自 Spring MVC,
@PathParam
来自 JAX-RS。对此有什么见解吗?

spring-mvc jax-rs restful-url path-parameter
7个回答
76
投票

@PathVariable@PathParam 均用于从 URI Template

访问参数

差异:

  • 正如您提到的
    @PathVariable
    来自 spring,
    @PathParam
    来自 JAX-RS
  • @PathParam
    只能与REST一起使用,其中
    @PathVariable
    在Spring中使用,因此它可以在MVC和REST中使用。

另请参阅: @RequestParam 和 @QueryParam 注解的区别


44
投票

查询参数:

将 URI 参数值分配给方法参数。春天,是

@RequestParam

例如,

http://localhost:8080/books?isbn=1234

@GetMapping("/books/")
    public Book getBookDetails(@RequestParam("isbn") String isbn) {

路径参数:

将 URI 占位符值分配给方法参数。春天,是

@PathVariable

例如,

http://localhost:8080/books/1234

@GetMapping("/books/{isbn}")
    public Book getBook(@PathVariable("isbn") String isbn) {

12
投票

@PathParam 是一个参数注释,它允许您将变量 URI 路径片段映射到方法调用中。

@Path("/library")
public class Library {

   @GET
   @Path("/book/{isbn}")
   public String getBook(@PathParam("isbn") String id) {
      // search my database and get a string representation and return it
   }
}

了解更多详情:JBoss DOCS

在 Spring MVC 中,您可以在方法参数上使用 @PathVariable 注释将其绑定到 URI 模板变量的值 了解更多详情:SPRING DOCS


1
投票

@PathParam
是一个参数注释,允许您将变量 URI 路径片段映射到方法调用中。

@PathVariable
是从URI中获取一些占位符(Spring称之为URI模板)


0
投票

有些在 Spring 中也可以使用 @PathParam,但在进行 URL 请求时 value 将为 null 同时,如果我们使用@PathVarriable,那么如果没有传递值,那么应用程序将抛出错误


-2
投票

@PathVariable

@PathVariable 它是注释,在传入请求的 URI 中使用。

http://localhost:8080/restcalls/101?id=10&name=xyz

@RequestParam

@RequestParam 注解用于访问请求中的查询参数值。

public String getRestCalls(
@RequestParam(value="id", required=true) int id,
@RequestParam(value="name", required=true) String name){...}

注意

无论我们通过休息调用请求什么,即@PathVariable

无论我们为编写查询而访问什么,即@RequestParam


-2
投票

@PathParam:用于注入在 @Path 表达式中定义的命名 URI 路径参数的值。

例如:

@GET
@Path("/{make}/{model}/{year}")
@Produces("image/jpeg")
public Jpeg getPicture(@PathParam("make") String make, @PathParam("model") PathSegment car, @PathParam("year") String year) {
        String carColor = car.getMatrixParameters().getFirst("color");

}

@Pathvariable:该注解用于处理请求URI映射中的模板变量,并将其用作方法参数。

例如:

     @GetMapping("/{id}")
     public ResponseEntity<Patient> getByIdPatient(@PathVariable Integer id) {
          Patient obj =  service.getById(id);
          return new ResponseEntity<Patient>(obj,HttpStatus.OK);
     }
© www.soinside.com 2019 - 2024. All rights reserved.