spring mvc,@pathparam和@pathvariable之间有什么区别

kjthegm6  于 2021-07-06  发布在  Java
关注(0)|答案(7)|浏览(646)

**结束。**此问题不符合堆栈溢出准则。它目前不接受答案。
**想改进这个问题吗?**更新问题,使其成为堆栈溢出的主题。

15小时前关门了。
改进这个问题
据我所知,两者都有相同的目的。但事实是 @PathVariable 来自spring mvc和 @PathParam 来自jax-rs。对此有什么见解吗?

2skhul33

2skhul331#

@路径变量
@pathvariable它是注解,用于传入请求的uri中。
http://localhost:8080/restcalls/101?id=10&name=xyz
@请求参数
@requestparam注解,用于从请求访问查询参数值。

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

笔记
无论我们请求什么,都使用rest调用,即@pathvariable
无论我们访问什么来编写查询,即@requestparam

bogh5gae

bogh5gae2#

@pathparam:用于注入@path expression中定义的命名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:此注解用于处理请求uriMap中的模板变量,并将它们用作方法参数。
前任:

@GetMapping("/{id}")
     public ResponseEntity<Patient> getByIdPatient(@PathVariable Integer id) {
          Patient obj =  service.getById(id);
          return new ResponseEntity<Patient>(obj,HttpStatus.OK);
     }
7ajki6be

7ajki6be3#

@pathvariable和@pathparam都用于从uri模板访问参数
差异:
如你所说 @PathVariable 来自Spring和Spring @PathParam 来自jax-rs。 @PathParam 只能与休息一起使用,在哪里 @PathVariable 在spring中使用,所以它在mvc和rest中工作。

xe55xuns

xe55xuns4#

有些人也可以在spring中使用@pathparam,但当同时发出url请求时,value将为null如果我们使用@pathvariable,那么如果没有传递value,那么应用程序将抛出错误

eh57zj3b

eh57zj3b5#

@pathparam是一个参数注解,允许您将变量uri路径片段Map到方法调用中。

@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文档
在springmvc中,可以使用方法参数上的@pathvariable注解将其绑定到uri模板变量的值,以了解更多详细信息:springdocs

pxy2qtax

pxy2qtax6#

@PathParam 是一个参数注解,允许您将变量uri路径片段Map到方法调用中。 @PathVariable 是从uri中获取一些占位符(spring称之为uri模板)

fcy6dtqo

fcy6dtqo7#

查询参数:
为方法参数指定uri参数值。在Spring,它是 @RequestParam .
如。,

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

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

路径参数:
为方法参数指定uri占位符值。在Spring,它是 @PathVariable .
如。,

http://localhost:8080/books/1234

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

相关问题