spring-boot 创建REST服务
示例
使用STS(SpringStarterProject)或SpringInitializr(位于https://start.spring.io)创建项目。
在pom.xml中添加Web依赖关系:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
或在搜索框中键入WebSearchfordependencies,添加Web依赖性并下载压缩项目。
创建域类(即用户)
public class User { private Long id; private String userName; private String password; private String email; private String firstName; private String lastName; public Long getId() { return id; } public void setId(Long id) { this.id= id; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName= userName; } public String getPassword() { return password; } public void setPassword(String password) { this.password= password; } public String getEmail() { return email; } public void setEmail(String email) { this.email= email; } public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName= firstName; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName= lastName; } @Override public String toString() { return "User [id=" + id + ", userName=" + userName + ", password=" + password + ", email=" + email + ", firstName=" + firstName + ", lastName=" + lastName + "]"; } public User(Long id, String userName, String password, String email, String firstName, String lastName) { super(); this.id= id; this.userName= userName; this.password= password; this.email= email; this.firstName= firstName; this.lastName= lastName; } public User() {} }
创建UserController类并添加@Controller,@RequestMapping批注
@Controller @RequestMapping(value = "api") public class UserController { }
定义静态列表用户变量以模拟数据库并将2个用户添加到列表
private static List<User> users = new ArrayList<User>(); public UserController() { User u1 = new User(1L, "shijazi", "password", "shijazi88@gmail.com", "Safwan", "Hijazi"); User u2 = new User(2L, "test", "password", "test@gmail.com", "test", "test"); users.add(u1); users.add(u2); }
创建新方法以返回静态列表中的所有用户(getAllUsers)
@RequestMapping(value = "users", method = RequestMethod.GET) public @ResponseBody List<User> getAllUsers() { return users; }
运行应用程序[bymvncleaninstallspring-boot:run]并调用此URLhttp://localhost:8080/api/users
我们可以使用注释该类@RestController,在这种情况下,我们可以从该类中的所有方法中删除ResponseBody(@RestController=@Controller+ResponseBody),另外一点,如果我们使用ResponseEntity,我们可以控制返回的http代码,我们将实现以前的相同功能,但使用@RestController和ResponseEntity
@RestController @RequestMapping(value = "api2") public class UserController2 { private static List<User> users = new ArrayList<User>(); public UserController2() { User u1 = new User(1L, "shijazi", "password", "shijazi88@gmail.com", "Safwan", "Hijazi"); User u2 = new User(2L, "test", "password", "test@gmail.com", "test", "test"); users.add(u1); users.add(u2); } @RequestMapping(value = "users", method = RequestMethod.GET) public ResponseEntity<?> getAllUsers() { try { return new ResponseEntity<>(users, HttpStatus.OK); } catch (Exception e) { return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR); } } }
现在尝试运行该应用程序并将此URL称为http://localhost:8080/api2/users