RestController
Get
- 使用
@RestController
标注在一个控制器类上,再使用@RequestMapping(path)
指定映射地址,这个控制器类下的所有方法映射到这个地址下 - 在具体方法上标注
@GetMapping
表明这是一个Get请求api,这个注解的参数可以填地址,一般是指定条件,如按id查询,参数就是/{id}
,然后在方法的参数前标注@PathVariable
,使路径中的参数映射到方法中. - 如果需要很多参数,就使用
@QueryParam
,此时在访问api时需要以参数形式写url(即?和&添加参数) - 如果返回的是JavaBean,框架会自动将其转换成json形式,如果想设置json显示各种数据格式,在配置文件中的
spring.jackson
下的属性修改 - 可以使用正则表达式规定路径
Post
- post使用
@PostMapping
,然后在方法参数前加@RequestBody
,spring会将传入的json数据转换为参数类型的JavaBean对象实例 - 如果转换失败,会返回4xx的错误消息,表示请求参数有问题
Put
- put使用
@PutMapping
,put方法既可以有post的传入data,也可以有get方法的路径条件值,即该注解标注的方法的方法参数可以有@PathMapping
和@RequestBody
Delect
- delete使用
@DeleteMapping
,标注的方法参数可以有路径条件值,HttpServletRequest,和使用@RequestParam
标注的请求中的参数值,例如delectOne(@PathVariable int id,HttpServletRequest request,@RequestParam(value="delect_reason",required=false) String delectReason
,其中delect_reason可以使用类get的方法在请求url后?delect_reason=...
,也可以类post的在请求数据中设置
同源问题解决
spring-boot的同源解决是添加一个请求过程的配置,spring 4.2 可以在配置类继承WebMvcConfigurerAdapter
,然后重写其中一个抽象方法,
`@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowCredentials(true)
.allowedHeaders("*")
.allowedOrigins("*")
.allowedMethods("*");
}`
4.2以后上面的类被废弃,改实现WebMvcConfigurer
接口,然后还是实现一样的方法