在上一篇Spring Boot開發WEB頁面文章中,咱們介紹瞭如何搭建一個有頁面的web項目,這一篇咱們則着重講一下Spring Boot對RESTful的支持。java
首先須要介紹幾個經常使用的註解:web
對於資源的具體操做,由http動詞表示,經常使用的http動詞有如下五個(括號裏是對應的SQL命令):json
定義一個實體bean瀏覽器
public class Book { private String name; private String isbn; private String author; public String getAuthor() { return author; } public String getIsbn() { return isbn; } public String getName() { return name; } public void setAuthor(String author) { this.author = author; } public void setIsbn(String isbn) { this.isbn = isbn; } public void setName(String name) { this.name = name; } }
編寫controller服務器
@RestController @RequestMapping("/book") public class BookController { public static Map<String,Book> bookMap = new HashMap<String,Book>(); /** * 添加一本書 * @param book * @return */ @RequestMapping(value="/",method = RequestMethod.POST) public String postBook (@ModelAttribute Book book){ bookMap.put(book.getIsbn(),book); return "SUCCESS"; } /** * 查詢出全部book集合 * @return */ @RequestMapping(value="/",method = RequestMethod.GET) public List<Book> getBookList (){ List<Book> bookList = new ArrayList<Book>(bookMap.values()); return bookList; } /** * 根據ISBN獲取book * @param isbn * @return */ @RequestMapping(value="/{isbn}",method = RequestMethod.GET) public Book getBook(@PathVariable String isbn){ Book book = bookMap.get(isbn); return book; } /** * 更新book參數 * @param isbn * @param book * @return */ @RequestMapping(value="/{isbn}",method = RequestMethod.PUT) public String putBook(@PathVariable String isbn,@ModelAttribute Book book){ Book b = bookMap.get(isbn); b.setAuthor(book.getAuthor()); b.setName(book.getName()); bookMap.put(isbn,b); return "SUCCESS"; } /** * 根據isbn刪除book * @param isbn * @return */ @RequestMapping(value="/{isbn}",method = RequestMethod.DELETE) public String deleteBook(@PathVariable String isbn){ bookMap.remove(isbn); return "SUCCESS"; } }
至此一個簡單的RESTful API就寫完了,你們能夠經過瀏覽器插件來驗證正確性,此處咱們使用單元測試對接口進行驗證mvc
@RunWith(SpringJUnit4ClassRunner.class) @SpringApplicationConfiguration(classes = MockServletContext.class) @WebAppConfiguration public class DemoApplicationTests { private MockMvc mvc; @Before public void setUp() throws Exception { mvc = MockMvcBuilders.standaloneSetup(new BookController()).build(); } String json = "[{\"name\":\"三國演義\",\"isbn\":\"1234\",\"author\":\"羅貫中\"}]"; String json2 = "{\"name\":\"三國演義12\",\"isbn\":\"1234\",\"author\":\"羅貫中12\"}"; @Test public void contextLoads() throws Exception { // 測試Controller RequestBuilder request = null; //添加一本書 request = post("/book/") .param("name", "三國演義") .param("isbn", "1234") .param("author", "羅貫中"); mvc.perform(request) .andExpect(content().string(equalTo("SUCCESS"))); //獲取書本列表,應該有剛纔插入的數據 request = get("/book/"); mvc.perform(request) .andExpect(status().isOk()) .andExpect(content().string(equalTo(json))); //更新書名和做者 request = put("/book/1234") .param("name", "三國演義12") .param("author", "羅貫中12"); mvc.perform(request) .andExpect(content().string(equalTo("SUCCESS"))); //獲取isbn1234的書,查看是否修改爲功 request = get("/book/1234"); mvc.perform(request) .andExpect(content().string(equalTo(json2))); //刪除 request = delete("/book/1234"); mvc.perform(request) .andExpect(content().string(equalTo("SUCCESS"))); //查詢是否刪除成功 request = get("/book/"); mvc.perform(request) .andExpect(status().isOk()) .andExpect(content().string(equalTo("[]"))); } }
至此咱們完成了對API的驗證,不須要多餘的配置,我就完成了Spring MVC的功能,完成了一個簡單的RESTful接口。app