Spring-Boot Restful API 笔记

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接口,然后还是实现一样的方法

数据校验

  • 可以在传入方法内部对传入参数进行验证
  • 使用JSR303的注解验证,将注解标注在JavaBean中的具体字段前.下面是对一些常用的类型的校验注解
    FtBMTS.md.png
  • @Valid称为级联校验,例如加载bean上面,表明bean内部属性需要校验,写在集合类前,表明集合内每个元素需要校验,如果bean前或方法参数前没有这个注解,bean内部的校验注解没有用
  • 注解的位置可以写在成员变量,getter/setter,类上面
  • 这些注解的运用有很多方式,可以直接按需求google

猜你喜欢

转载自blog.csdn.net/qq_36865108/article/details/84981138