@RestController的使用,生成rest API
案例1
步驟:
(1)在model層,創(chuàng)建一個(gè)Result類,封裝code(狀態(tài)識(shí)別碼)、msg(提示信息)、data(核心數(shù)據(jù))。
public class Result<T> {
private Integer code;
private String msg;
private T data;
//對(duì)應(yīng)的getter、setter
......
}
(2)在model層,創(chuàng)建一個(gè)User實(shí)體類。
public class User {
private Integer id;
private String username;
private String password;
//對(duì)應(yīng)的getter、setter
......
}
(3)創(chuàng)建控制器UserController(相當(dāng)于入口main)。
@RestController
public class UserController {
@RequestMapping("/")
public String index(){return "Hello World!"; } //返回普通字符串
@RequestMapping("/user")
public Result<User> user(){ //返回json字符串
Result<User> result=new Result<>();
User user=new User();
user.setId(1);
user.setUsername("xxx");
user.setPassword("123");
result.setCode(1);
result.setMsg("succuss");
result.setData(user);
return result;
}
@RequestMapping("/users")
public Result<List<User>> users(){ //返回帶數(shù)組結(jié)構(gòu)的json字符串
Result<List<User>> result=new Result<>();
List<User> userList=new ArrayList<>();
User user=new User();
user.setId(1);
user.setUsername("xxx");
user.setPassword("123");
userList.add(user);
Useruser2=newUser();
user2.setId(1);
user2.setUsername("yyy");
user2.setPassword("123");
userList.add(user2);
result.setCode(1);
result.setMsg("succuss");
result.setData(userList);
returnresult;
}
}
使用@Controller直接跳轉(zhuǎn)html頁面,配合@ResponseBody實(shí)現(xiàn)rest API
案例2
(1)在resources/static路徑下創(chuàng)建一個(gè)靜態(tài)頁面view1.html。
(2)在application.properties中添加靜態(tài)資源映射。
#服務(wù)端口號(hào)
server.port=8888//自己設(shè)置
#靜態(tài)資源映射
spring.resources.static-locations=classpath:/static/
spring.mvc.static-path-pattern=/static/**
(3)使用springmvc自帶的@Controller直接跳轉(zhuǎn)html頁面(不帶模板引擎的),配合@ResponseBody實(shí)現(xiàn)rest API。
@Controller
public class ViewAndRestController {
@RequestMapping("/myview")
public String myview(){ //跳轉(zhuǎn)頁面
System.out.println("myview");
return"static/view1.html";
}
@RequestMapping("/user2")
@ResponseBody
public Result<User> user(){ //輸出json串
Result<User> result=new Result<>();
User user=new User();
user.setId(1);
user.setUsername("xxx");
user.setPassword("123");
result.setCode(1);
result.setMsg("success");
result.setData(user);
return result;
}
}
(4)此時(shí)配置的靜態(tài)文件映射不光只針對(duì)html頁面,還有對(duì)圖片、css、js等文件的映射。后面將靜態(tài)文件放置到這個(gè)已經(jīng)配置好的static文件夾下即可。當(dāng)然也可以自行創(chuàng)建一個(gè)文件夾然后再來進(jìn)行配置。
總結(jié)
1、@RestController是對(duì)class進(jìn)行注解,該注解下的所有被@RequestMapping注解的方法最終輸出結(jié)果都為字符串,不會(huì)跳轉(zhuǎn)界面。
2、用@Controller注解的class,若將@RequestMapping注解的方法的返回值類型設(shè)置為String,則可以進(jìn)行界面跳轉(zhuǎn)。案例中是直接跳轉(zhuǎn)html靜態(tài)頁面,所以需要配置靜態(tài)資源訪問映射。
3、在@Controller注解的class中,想輸出字符串,可以在@RequestMapping注解的方法上再添加一個(gè)@ResponseBody注解。
4、如果在跳轉(zhuǎn)界面的方法上加上了@ResponseBody注解,則不能跳轉(zhuǎn)界面了,而是輸出的字符串。
5、Json.cn查看json