Spring MVC—— RESTful

Spring MVCRestful的支持是通过@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中的参数即可。