Spring Boot@PostMapping

本文详细介绍了 SpringMVC 中对于 RESTful 风格的支持方式,包括使用 @PostMapping、@GetMapping 等注解处理不同类型的 HTTP 请求,并通过实例展示了 @RequestMapping 注解的多种配置选项。

@PostMapping

映射一个POST请求

Spring MVC新特性
提供了对Restful风格的支持

@PostMapping(value = "/user/login")
//等价于
@RequestMapping(value = "/user/login",method = RequestMethod.POST)

扩展
@GetMapping,处理get请求
@PostMapping,处理post请求
@PutMapping,处理put请求
@DeleteMapping,处理delete请求

@RequestMapping

RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。
属性

  1. value:指定请求的实际地址
  2. method:指定方法类型,get、post、put、delete等
  3. consumes:指定处理请求的提交内容类型,如application/json, text/html;
  4. produces: 指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回;
  5. params: 指定request中必须包含某些参数值是,才让该方法处理。
  6. headers: 指定request中必须包含某些指定的header值,才能让该方法处理请求。

value/method示例

@Controller
@RequestMapping("/appointments")
public class AppointmentsController {

    private AppointmentBook appointmentBook;
    
    @Autowired
    public AppointmentsController(AppointmentBook appointmentBook) {
        this.appointmentBook = appointmentBook;
    }

    @RequestMapping(method = RequestMethod.GET)
    public Map<String, Appointment> get() {
        return appointmentBook.getAppointmentsForToday();
    }

    @RequestMapping(value="/{day}", method = RequestMethod.GET)
    public Map<String, Appointment> getForDay(@PathVariable @DateTimeFormat(iso=ISO.DATE) Date day, Model model) {
        return appointmentBook.getAppointmentsForDay(day);
    }

    @RequestMapping(value="/new", method = RequestMethod.GET)
    public AppointmentForm getNewForm() {
        return new AppointmentForm();
    }

    @RequestMapping(method = RequestMethod.POST)
    public String add(@Valid AppointmentForm appointment, BindingResult result) {
        if (result.hasErrors()) {
            return "appointments/new";
        }
        appointmentBook.addAppointment(appointment);
        return "redirect:/appointments";
    }
}

value的uri值为以下三类:

A) 可以指定为普通的具体值;

B) 可以指定为含有某变量的一类值(URI Template Patterns with Path Variables);

C) 可以指定为含正则表达式的一类值( URI Template Patterns with Regular Expressions);

@RequestMapping(value="/owners/{ownerId}", method=RequestMethod.GET)
public String findOwner(@PathVariable String ownerId, Model model) {
  Owner owner = ownerService.findOwner(ownerId);  
  model.addAttribute("owner", owner);  
  return "displayOwner"; 
}
@RequestMapping("/spring-web/{symbolicName:[a-z-]+}-{version:\d\.\d\.\d}.{extension:\.[a-z]}")
  public void handle(@PathVariable String version, @PathVariable String extension) {    
    // ...
  }
}

cousumes的样例:

@Controller
@RequestMapping(value = "/pets", method = RequestMethod.POST, consumes="application/json")
public void addPet(@RequestBody Pet pet, Model model) {    
    // implementation omitted
}

params的样例:

@Controller
@RequestMapping("/owners/{ownerId}")
public class RelativePathUriTemplateController {

  @RequestMapping(value = "/pets/{petId}", method = RequestMethod.GET, params="myParam=myValue")
  public void findPet(@PathVariable String ownerId, @PathVariable String petId, Model model) {    
    // implementation omitted
  }
}

headers的样例:

@Controller
@RequestMapping("/owners/{ownerId}")
public class RelativePathUriTemplateController {

@RequestMapping(value = "/pets", method = RequestMethod.GET, headers="Referer=http://www.ifeng.com/")
  public void findPet(@PathVariable String ownerId, @PathVariable String petId, Model model) {    
    // implementation omitted
  }
}

参考并引用自

https://www.cnblogs.com/qq78292959/p/3760560.html

### 三级标题:Spring Boot 中 @GetMapping、@PostMapping、@PutMapping 和 @DeleteMapping 注解的使用方法 在 Spring Boot 应用中,`@GetMapping`、`@PostMapping`、`@PutMapping` 和 `@DeleteMapping` 是用于处理不同 HTTP 请求类型的注解,它们分别对应 GET、POST、PUT 和 DELETE 方法。这些注解简化了控制器方法的映射配置,使得代码更具可读性和可维护性。 #### @GetMapping `@GetMapping` 用于处理 HTTP GET 请求,通常用于获取资源。该注解只能标注在方法上,并且仅响应 GET 请求。例如: ```java @GetMapping("/users") public List<User> getAllUsers() { return userService.findAll(); } ``` 此方法将响应 `/users` 路径的 GET 请求,返回所有用户信息[^1]。 #### @PostMapping `@PostMapping` 用于处理 HTTP POST 请求,通常用于创建新资源。它也是一个组合注解,相当于 `@RequestMapping(method = HttpMethod.POST)` 的快捷方式。例如: ```java @PostMapping("/users") public User createUser(@RequestBody User user) { return userService.save(user); } ``` 此方法将接收 POST 请求,并在 `/users` 路径下创建一个新用户[^1]。 #### @PutMapping `@PutMapping` 用于处理 HTTP PUT 请求,通常用于更新已有资源。该方法是幂等的,意味着多次相同的请求应产生相同的效果。例如: ```java @PutMapping("/users/{id}") public User updateUser(@PathVariable Long id, @RequestBody User userDetails) { return userService.update(id, userDetails); } ``` 此方法将接收 PUT 请求,并更新指定 ID 的用户信息[^2]。 #### @DeleteMapping `@DeleteMapping` 用于处理 HTTP DELETE 请求,通常用于删除资源。例如: ```java @DeleteMapping("/users/{id}") public void deleteUser(@PathVariable Long id) { userService.delete(id); } ``` 此方法将响应 DELETE 请求,并删除指定 ID 的用户[^3]。 ### 三级标题:结合路径变量和请求体的使用 在实际开发中,这些注解常与 `@PathVariable` 和 `@RequestBody` 结合使用。`@PathVariable` 用于从 URL 中提取参数,而 `@RequestBody` 则用于将请求体中的 JSON 或 XML 数据转换为 Java 对象。例如: ```java @GetMapping("/users/{id}") public User getUserById(@PathVariable Long id) { return userService.findById(id); } ``` 此方法通过路径变量 `id` 获取特定用户的信息[^3]。 ### 三级标题:RESTful API 设计中的最佳实践 在构建 RESTful API 时,合理使用这些注解有助于实现清晰的接口设计。GET 用于获取资源,POST 用于创建资源,PUT 用于更新资源,DELETE 用于删除资源。这种设计模式不仅提高了 API 的可读性,也增强了系统的可维护性和可扩展性。 ---
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值