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

u59ebvdq  于 2023-08-06  发布在  Spring
关注(0)|答案(7)|浏览(115)

**已关闭。**此问题不符合Stack Overflow guidelines。它目前不接受回答。

这个问题似乎与help center中定义的范围内的编程无关。
两年前关闭。
Improve this question
据我所知,两者都是为了同一个目的。除了@PathVariable来自Spring MVC,@PathParam来自JAX-RS。对此有何见解?

oxalkeyp

oxalkeyp1#

@PathVariable和@PathParam都用于从URI Template访问参数
差异:

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

标签:Difference between @RequestParam and @QueryParam Anotation

dwbf0jvd

dwbf0jvd2#

QueryParam:

将URI参数值分配给方法参数。在Spring中,它是@RequestParam
例如,

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

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

字符串

PathParam:

将URI占位符值分配给方法参数。在Spring中,它是@PathVariable
例如,

http://localhost:8080/books/1234

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

x7yiwoj4

x7yiwoj43#

@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 DOCS
在Spring MVC中,您可以在方法参数上使用**@PathVariable**annotation将其绑定到URI模板变量的值以获取更多详细信息:SPRING DOCS

z9gpfhce

z9gpfhce4#

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

yshpjwxd

yshpjwxd5#

有些人也可以在Spring中使用@PathParam,但当URL请求时,value将为null。同时,如果我们使用@PathVarriable,则如果value未被传递,则应用程序将抛出错误

2w3kk1z5

2w3kk1z56#

@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){...}

字符串
注记
无论我们用rest调用请求什么,即@PathVariable
无论我们正在访问什么来编写查询,即@RequestParam

irlmq6kh

irlmq6kh7#

  • @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");

}

字符串

  • @路径变量 *:这个注解用于处理请求URIMap中的模板变量,并将它们用作方法参数。

例如:

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

相关问题