请求, 响应

Mr.HddspringMVC大约 2 分钟...

请求、响应

基于注解的编程模型

控制器

SpringMVC 中的 MVC 模型中的 “C” 就是 Controller .

可以在某个类上声明 @Controller 作为 web Controller.

相关信息

@RestController 是一个组合注解,如上所示,其用于 RESTful 风格的 API 设计.传统的 web 应用与 前端之间不分离,所以需要 ModeView 模型,那么对于一个请求需要返回一个渲染好的页面,而 @ResponseBody 可以将方法的返回值直接作为响应正文,这样对于前后端分离的应用来说更加适用.

@RestController("/test")
public class HelloHandler {
  
  @GetMapping("/hello")             
  public String helloMVC(){
    return "Hello StringMVC";
  }
}
//  访问   ...../test/hello 路径响应 Hello StringMVC 

注意

@Controller 注解为 Spring 注解模型之一,在 Springboot 中不需要直接配置,因为其启动类上的注解是一个组合注解,其中包含下面的注解扫描方式,在 Spring 中使用需要将其配置在扫描 Bean 的包范围下:

@Configuration
@CompentScan("com.learn.Controller")
public class WebConfig {

    // ...
}

 




请求映射

在类上加上 控制器 之后就可以在该类中进行请求映射了。

@RequestMappingopen in new window 注解用于将请求映射到控制器方法. 它具有各种属性,可以通过:

进行匹配. 可以在类级别使用它来表示共享映射,或在方法级别上用于缩小到特定的请求映射范围.

封装 Http 请求方法的请求映射注解:

  • @GetMapping
  • @PostMapping
  • @PutMapping
  • @DeleteMapping
  • @PatchMapping

consumes 可以根据【请求的 Content-Type】 缩小请求映射范围

@PostMapping(path = "/adduser", 
             consumes = "application/json") 
public void addUser(@RequestBody User user) {
    // ...
}

 



相关信息

consumes 属性还支持否定表达式 :

  • 例如,!text/plain 表示除 text/plain 之外的任何内容类型.

也可以指定 MediaTypeopen in new window 中的常量类型作为限制:

  • 例如, MediaType.APPLICATION_JSON_VALUE

注意

可以在类级别声明共享 consumes 属性. 但是,与大多数其他请求映射属性不同,在类级别使用时,会对方法级别consumes 属性覆盖而不是扩展.

produces 根据 Accept 请求头和控制器方法生成的内容类型列表来缩小请求映射

@GetMapping(path = "/users/{userId}", 
            produces = "application/json") 
@ResponseBody
public User getUser(@PathVariable String userId) {
    // ...
}

 




其性质同 consumes 一致。

函数式编程模型

你认为这篇文章怎么样?
  • 0
  • 0
  • 0
  • 0
  • 0
  • 0
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v2.14.9