springMVC-RESTful
REST风格
~REST风格:使用资源名作为URL,使用HTTP的请求方式表示对资源的操作。
资源——表现形式(如JSON等)——状态变化(GET、POST、PUT、DELETE)实现
~调用第三方的功能?
①API(接口):给第三方发请求,获取响应数据。
②SDK:导入jar包
@RequestMapping("/emp/v1")
@RestController
public class EmployeeController {
@Autowired
private EmployeeService employeeService;
/**
* 按照id查询员工
* @param id
* @return
*/
@GetMapping("/employee/{id}") //{id}路径变量,动态的
public R getEmployee(@PathVariable("id") Long id) { //@PathVariable路径变量标识-取路径id的值
Employee employeeById = employeeService.getEmployeeById(id);
return R.ok(employeeById);
}
封装统一返回数据
/**
* Response (首字符简写R)
* 统一返回结果
* 封装统一返回数据
* code:业务状态码,200是成功,剩下是失败;前后端约定不同的业务状态码前端做不同的处理
* msg:服务端返回提示信息
* data:服务器返回给前端数据
* {
* "code": 200,
* "msg": "提示信息",
* "data": {}
* }
*
* 前端统一处理:
* 1.前端发送请求,接受服务器数据
* 2.判断状态码,根据状态码做不同的处理
*/
@Data
public class R<T> {
private Integer code;
private String msg;
private T data; //使用泛型 ,先声明,后使用;T类型数据(任意类型)
public static <T> R<T> ok(T data) {
R<T> r = new R<>();
r.setCode(200);
r.setMsg("成功");
r.setData(data);
return r;
}
// 空成功
public static R ok() {
R r = new R<>();
r.setCode(200);
return r;
}
// 默认失败码
public static R error(String msg) {
R r = new R<>();
r.setCode(500);
r.setMsg(msg);
return r;
}
// 自定义失败码和消息
public static R error(Integer code, String msg) {
R r = new R<>();
r.setCode(code);
r.setMsg(msg);
return r;
}
....
}
CORS (跨源资源共享)
CORS policy:同源策略(限ajax请求、图片、css、js) - 前后端分离就会出现跨域问题。
~什么是跨域问题?浏览器为了安全,默认会遵循同源策略(请求要去的服务器和当前项目所在的服务器必须是同一个源[同一个服务器]),否则请求就会被拦截。
例如: 浏览器页面所在的:http://localhost /employee/base
页面上要发去的请求:http://localhost:8080 /api/v1/employees
"/"以前的东西,必须完全一样。浏览器才能把请求发出去。
复杂的跨域请求会发送2次:
1、options 请求:预检请求,询问服务器是否允许当前域名进行跨域访问。
2、真正的请求:POST、DELETE、PUT等。
~解决跨域问题:
1、前端自己解决...
2、后端解决:允许前端跨域即可——标上注解@CrossOrigin
@CrossOrigin //允许跨域请求
@RequestMapping("/emp/v1")
@RestController
public class EmployeeController {
......
}
原文地址:https://blog.csdn.net/zjw_rp/article/details/144727748
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!