Spring MVC
对Restful
的支持是通过@PathVariable
注解完成的。
@PathVariable
的定义如下:
package org.springframework.web.bind.annotation;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target(ElementType.PARAMETER)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface PathVariable {
/**
* The URI template variable to bind to.
*/
String value() default "";
}
从定义可以看出来,@PathVariable
只能使用在函数的参数上。并且有一个参数,用于指定要绑定的URI
上的参数。
示例:
假设,我们要获取书的信息,RESTful
风格的接口可能会是下面这样的:
GET http://localhost:8080/book/26298935
GET http://localhost:8080/book/26298936
GET http://localhost:8080/book/26298937
这时候,参数在URL
里面,我们的实现如下:
package com.fpliu.newton.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@Controller
public final class BookController {
@RequestMapping(value = "/book/{id}", method = RequestMethod.GET)
public String getInfo(@PathVariable("id") String id, Model model) {
//调用Service查询书的信息
return "book";
}
}
这里的例子是URL
里面只有一个参数,实际上可以有很多个参数,只要用@PathVariable
绑定对应的URL
中的参数即可。