Springboot Controller层常用注解

包含类注解,方法注解,参数注解

[TOC]


类注解

@Controller与@RestController

相同处:都是用来表示Spring某个类的是否可以接收HTTP请求

@Controller

标识一个Spring类是Spring MVC controller处理器,@Controller类中的方法可以直接通过返回String跳转到jsp、ftl、html等模版页面。在方法上加@ResponseBody注解,也可以返回实体对象。

  • @Controller
    public class ControllerExample{

    @RequestMapping(value = "/test", method = RequestMethod.GET)
    public String test(){
    return "/user/test";
    }
    }

@RestController

@RestController是@Controller和@ResponseBody的结合体,@RestController类中的所有方法只能返回String、Object、Json等实体对象,不能跳转到模版页面。

  • @RestController
    public class UserController {
     
        @RequestMapping(value = "/index",method = RequestMethod.GET)
        public String toIndex(){
            ModelAndView mv = new ModelAndView("index");
              return mv;    
        }
    }
    


    ---

    ### @RequestMapping

    > 规定初步的请求映射,相对于web应用的根目录,
    >
    > @RequestMapping的默认属性为value,所以@RequestMapping("/example")等价于@RequestMapping(value="/example")
    >

    - [ ] ```java
    @RestController
    @RequestMapping("/example")
    public class ExampleController{

    //代码块

    }
    ---

方法注解

进一步细分请求映射,相对于类定义处的URL。如果类定义处没有使用@RequestMapping注解,则方法标记的URL相对于根目录而言


@RequestMapping

@RequestMapping除了可以指定URL映射外,还可以指定“请求方法、请求参数和请求头”的映射请求

属性 功能
value 请求的URL
method 请求方法 RequestMethod.GET(POST、DELETE、PUT、PATCH)
params 请求参数
headers 请求头

@GetMapping

用于将HTTP GET请求映射到特定处理程序方法的注释。具体来说,@GetMapping是一个作为快捷方式的组合注释: @RequestMapping(method = RequestMethod.GET)

@PostMapping

用于将HTTP POST请求映射到特定处理程序方法的注释。具体来说,@PostMapping是一个作为快捷方式的组合注释: @RequestMapping(method = RequestMethod.POST)

@PutMapping

和PostMapping作用等同,都是用来向服务器提交信息。如果是添加信息,倾向于用@PostMapping,如果是更新信息,倾向于用@PutMapping。两者差别不是很明显

@DeleteMapping

删除URL映射

  • @DeleteMapping(value = "/posts/{id}")
    public ResponseEntity<Long> deletePost(@PathVariable Long id) {
    
        var isRemoved = postService.delete(id);
    
        if (!isRemoved) {
            return new ResponseEntity<>(HttpStatus.NOT_FOUND);
        }
    
        return new ResponseEntity<>(id, HttpStatus.OK);
    }
    

@PatchMapping

Patch方式是对put方式的一种补充

put方式是可以更新.但是更新的是整体.patch是对局部更新

RESTful风格

REST(Representational State Transfer):(资源)表现层状态转化,它是目前最流行的一种软件架构,其结构清晰、易于理解、扩展方便且符合标准,正在越来越多的被实践到应用中。

方法参数注解

@RequestParam

@PathParam

@PathVariable