@PathVariable为空时的spring url映射

时间:2016-07-12 10:47:44

标签: spring

对于以下网址映射(所有GET请求):

1. "/book/{book-id}"

2. "/book/publisher/{publisher-id}"

3. "/book/borrower/{borrower-id}" 

如果使用空字符串调用 2。 3。,例如/ book / publisher /或/ book / user /然后忽略正斜杠/,并使用book-id作为'publisher'或'borrower'调用 1。。这是一个正确的行为,因为路径变量是强制性的,在这种情况下将1作为唯一有效的URL,或者是否有一些控制它的配置?

这是一个简单的休息控制器,它返回JSON(代码简化):

@RestController
public class BookController {

@Autowired
BookRepository repository; //JPA repository

@RequestMapping(value="/book/{book-id}",method= RequestMethod.GET)
public Book getBook(@PathVariable("book-id") String bookId){
    return repository.findOne(bookId);
}

@RequestMapping(value="/book/publisher/{publisher-id}",method=RequestMethod.GET)
public List<Book> getBooksByPublisher(@PathVariable("publisher-id") String publisherId){
    return repository.findAll(publisherId);
}

@RequestMapping(value="/book/borrower/{borrower-id}",method= RequestMethod.GET)
public List<Book> getBooksForBorrower(@PathVariable("borrower-id") String borrowerId){
   return repository.findAll(borrowerId);
}
}

1 个答案:

答案 0 :(得分:0)

您可以在getBook()方法中控制这样的流程

if(bookId.equals("publisher") || bookId.equals("borrower")){
        model = new ModelAndView("index");
        //or do other code to controll the flow
        return model;
    }