自学内容网 自学内容网

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)!