Spring Boot構建REST
阿新 • • 發佈:2018-11-01
controller
package com.example.demo.controller; import com.example.demo.pojo.User; import com.example.demo.utils.ResultUtil; import org.springframework.web.bind.annotation.*; import java.util.*; /* * * Created by Ay on 2018/10/26 */ @RestController @RequestMapping("/users") public class UserController { //執行緒安全Map static Map<Long,User> users = Collections.synchronizedMap(new HashMap<Long,User>()); /** * /users 的get請求 得到user的列表 * @return */ @RequestMapping(value = "/",method = RequestMethod.GET) public List<User> getUserList(){ return new ArrayList<User>(users.values()); } /** * /users 的post請求 增加user * @param user * @return */ @RequestMapping(value = "/",method = RequestMethod.POST) public Object postUser(@ModelAttribute User user){ users.put(user.getId(),user); return "success"; } /** * /users/id 取得id並返回查詢的user * @param id 要獲取的使用者id * @return */ @RequestMapping(value = "/{id}",method = RequestMethod.GET) public User getUser(@PathVariable Long id){ return users.get(id); } /** * /users/id 更新id的資訊 * @param id * @param user * @return */ @RequestMapping(value = "/{id}",method = RequestMethod.PUT) public Object putUser(@PathVariable Long id,@ModelAttribute User user){ User u = users.get(id); u.setName(user.getName()); u.setAge(user.getAge()); return "success"; } /** * /users/id 刪除user * @param id * @return */ @RequestMapping(value = "/{id}",method = RequestMethod.DELETE) public Object deleteUser(@PathVariable Long id){ users.remove(id); return "success"; } }
單元測試
package com.example.demo; import com.example.demo.controller.UserController; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.RequestBuilder; import org.springframework.test.web.servlet.setup.MockMvcBuilders; import static org.hamcrest.Matchers.equalTo; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; @RunWith(SpringRunner.class) @SpringBootTest public class DemoApplicationTests { private MockMvc mvc; @Before public void setUp(){ mvc = MockMvcBuilders.standaloneSetup(new UserController()).build(); } @Test public void contextLoads() throws Exception{ // 測試UserController RequestBuilder request = null; // 1、get查一下user列表,應該為空 request = get("/users/"); mvc.perform(request) .andExpect(status().isOk()) .andExpect(content().string(equalTo("[]"))); // 2、post提交一個user request = post("/users/") .param("id", "1") .param("name", "測試大師") .param("age", "20"); mvc.perform(request) .andExpect(content().string(equalTo("{\"errorCode\":0,\"msg\":\"OK\",\"data\":null}"))); // 3、get獲取user列表,應該有剛才插入的資料 request = get("/users/"); mvc.perform(request) .andExpect(status().isOk()) .andExpect(content().string(equalTo("[{\"id\":1,\"name\":\"測試大師\",\"age\":20}]"))); // 4、put修改id為1的user request = put("/users/1") .param("name", "測試終極大師") .param("age", "30"); mvc.perform(request) .andExpect(content().string(equalTo("success"))); // 5、get一個id為1的user request = get("/users/1"); mvc.perform(request) .andExpect(content().string(equalTo("{\"id\":1,\"name\":\"測試終極大師\",\"age\":30}"))); // 6、del刪除id為1的user request = delete("/users/1"); mvc.perform(request) .andExpect(content().string(equalTo("success"))); // 7、get查一下user列表,應該為空 request = get("/users/"); mvc.perform(request) .andExpect(status().isOk()) .andExpect(content().string(equalTo("[]"))); } }