1.几种请求方式
常见的请求方式:@RequestMapping
Spring4.3中引进了@GetMapping、@PostMapping、@PutMapping、@DeleteMapping、@PatchMapping,来帮助简化常用的HTTP方法的映射,并更好地表达被注解方法的语义。
@RequestMapping如果没有指定请求方式,将接收Get,Post,Head,Options等所有的请求方式
@GetMapping是一个组合注解,是@RequestMapping(method = RequestMethod.GET)的缩写。
使用场景:Get请求 适用于查询单个对象
@PostMapping是一个组合注解,是@RequestMapping(method = RequestMethod.POST)的缩写。
使用场景:Post请求 适用于更新单个对象或者元素时
@PatchMapping是一个组合注解,是@RequestMapping(method = RequestMethod.PATCH)的缩写。
使用场景:Patch请求 适用于添加和删除多个对象时
@DeleteMapping是一个组合注解,是@RequestMapping(method = RequestMethod.DELETE)的缩写。
使用场景:Delete请求 适用于删除单个对象时
@PutMapping是一个组合注解,是@RequestMapping(method = RequestMethod.PUT)的缩写。
使用场景:Put请求 适用于添加单个对象或者元素时
2.跨域问题:只要域名(ip)和端口号有一样不同,那么都是跨域。
前后段分离的项目,在各自的服务器中启动
由于: 域名不同 www.jd.com 与 www.taobao.com
域名相同,端口不同 www.jd.com:8080 与 www.jd.com:8081
二级域名不同 item.jd.com 与 miaosha.jd.com
所以存在跨域问题,服务器之间发送请求是2次,一次是访问请求(我可以访问你吗),一次是响应请求(可以或者拦截),ajax(发送请求)向不同 域 请求数据时,浏览器只拦截ajax请求,造成跨域请求的拦截(浏览器拦截的)。
解决跨域问题:
2.1 使用Nginx(是一个服务器)的反向代理处理
2.2 使用Cross拦截器解决:实质是 让后台告诉浏览器前段可以通过哪些请求方式访问我(后台)。
在SpringBoot管理的Mavun项目中 写一个类声明为配置类:
如下
@Configuration
public class GlobalCorsConfig {
@Bean
public CorsFilter corsFilter() {
//1.添加CORS配置信息
CorsConfiguration config = new CorsConfiguration();
//1) 允许指定的服务来访问
config.addAllowedOrigin("http://127.0.0.1:8081");
config.addAllowedOrigin("http://localhost:8081");
//2) 是否发送Cookie信息
config.setAllowCredentials(true);
//3) 允许的请求方式
config.addAllowedMethod("OPTIONS");
config.addAllowedMethod("HEAD");
config.addAllowedMethod("GET");
config.addAllowedMethod("PUT");
config.addAllowedMethod("POST");
config.addAllowedMethod("DELETE");
config.addAllowedMethod("PATCH");
// 4)允许的头信息
config.addAllowedHeader("*");
//2.添加映射路径,我们拦截一切请求
UrlBasedCorsConfigurationSource configSource = new
UrlBasedCorsConfigurationSource();
configSource.registerCorsConfiguration("/**", config);
//3.返回新的CorsFilter.
return new CorsFilter(configSource);
}
}