@RestController的使用,生成rest API
案例1
步骤:
(1)在model层,创建一个Result类,封装code(状态识别码)、msg(提示信息)、data(核心数据)。
public class Result<T> {
private Integer code;
private String msg;
private T data;
//对应的getter、setter
......
}
(2)在model层,创建一个User实体类。
public class User {
private Integer id;
private String username;
private String password;
//对应的getter、setter
......
}
(3)创建控制器UserController(相当于入口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(){ //返回带数组结构的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直接跳转html页面,配合@ResponseBody实现rest API
案例2
(1)在resources/static路径下创建一个静态页面view1.html。
(2)在application.properties中添加静态资源映射。
#服务端口号
server.port=8888//自己设置
#静态资源映射
spring.resources.static-locations=classpath:/static/
spring.mvc.static-path-pattern=/static/**
(3)使用springmvc自带的@Controller直接跳转html页面(不带模板引擎的),配合@ResponseBody实现rest API。
@Controller
public class ViewAndRestController {
@RequestMapping("/myview")
public String myview(){ //跳转页面
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)此时配置的静态文件映射不光只针对html页面,还有对图片、css、js等文件的映射。后面将静态文件放置到这个已经配置好的static文件夹下即可。当然也可以自行创建一个文件夹然后再来进行配置。
总结
1、@RestController是对class进行注解,该注解下的所有被@RequestMapping注解的方法最终输出结果都为字符串,不会跳转界面。
2、用@Controller注解的class,若将@RequestMapping注解的方法的返回值类型设置为String,则可以进行界面跳转。案例中是直接跳转html静态页面,所以需要配置静态资源访问映射。
3、在@Controller注解的class中,想输出字符串,可以在@RequestMapping注解的方法上再添加一个@ResponseBody注解。
4、如果在跳转界面的方法上加上了@ResponseBody注解,则不能跳转界面了,而是输出的字符串。
5、Json.cn查看json