一、SpringBoot默认会使用Json作为报文响应格式
@Controller
@RequestMapping("/sys/user")
public class UserController {
@RequestMapping("login")
@ResponseBody
public Map<String, String> login() {
Map<String, String> hashMap = new HashMap<>();
hashMap.put("msg", "登录成功");
return hashMap;
}
}
备注:@ResponseBody 注解,它表示此接口响应为纯数据,不带任何界面展示。
为了方便,可以定义属于自己的数据规范。
public class Result {
//状态码、描述、数据
private int code;
private String msg;
private Object data;
....省略get和set方法
}
定义枚举类维护状态码。
public enum ResultCode {
SUCCESS(0, "请求成功"),
WARN(-1, "网络异常,请稍后重试");
private int code;
private String msg;
ResultCode(int code, String msg) {
this.msg = msg;
}
public int getCode() {
return code;
}
public String getMsg() {
return msg;
}
}
案例:用户登录请求
1.用户实体类
public class User {
private String username;
private String password;
...
}
2.controller类里面接受前台请求的参数
@RestController
@RequestMapping("/user")
public class UserController {
@RequestMapping("login")
public Result login(@RequestBody User loginUser) {
return new Result(ResultCode.SUCCESS, loginUser);
}
}
3.前台发起的请求要以json的格式发送(可以使用ajax)
HTML页面:
<input id="username" readonly="readonly">
<input id="password" readonly="readonly">
Ajax请求代码:
<script type="text/javascript" src="/js/jquery-3.3.1.js"></script>
var username=document.getElementsById("username").toString();
var userpassword=document.getElementsById("userpassword").toString();
$.ajax({
type:"post",
url:"http://localhost:8080/user/login",
data:{
username: username,
userpassword: userpassword
},
dataType:"json",
async:false,
success:function (data) {
console.log(data);
},
error:function (e) {
console.log(e);
}
});
</script>