@RequsetMapping
时间: 2025-06-27 14:15:08 浏览: 12
### 使用 `@RequestMapping` 注解的方法
在 Spring MVC 中,`@RequestMapping` 是一个核心注解,用于将 HTTP 请求映射到特定的控制器方法。此注解能够处理各种类型的 URL 路径模式以及不同的 HTTP 方法。
#### 基本语法
```java
@RequestMapping(value = "/example", method = RequestMethod.GET)
public String exampleMethod() {
return "viewName";
}
```
这段代码展示了如何定义一个简单的 GET 请求处理器[^1]。
#### 处理不同HTTP请求方式
除了GET之外,还可以针对POST、PUT、DELETE等其他HTTP动词创建专门的路由:
- **GET**: 获取资源信息。
- **POST**: 创建新资源。
- **PUT/PATCH**: 更新现有资源。
- **DELETE**: 删除资源。
对于每种类型的操作,可以通过设置 `method` 属性来限定允许访问的方式:
```java
// POST请求示例
@RequestMapping(value="/createUser", method=RequestMethod.POST)
public String createUser(@ModelAttribute User user){
userService.save(user);
return "redirect:/users";
}
// PUT请求更新用户资料
@RequestMapping(value="/updateUser/{id}", method=RequestMethod.PUT)
public ResponseEntity<String> updateUser(@PathVariable Long id, @RequestBody User updatedUserDetails){
Optional<User> existingUserOpt = userRepository.findById(id);
if (!existingUserOpt.isPresent()) {
return new ResponseEntity<>("No record found with ID:" + id , HttpStatus.NOT_FOUND);
}
// Update logic here...
return new ResponseEntity<>("Successfully Updated!",HttpStatus.OK);
}
```
上述例子说明了怎样利用 `@RequestMapping` 来区分并响应不同类型的数据操作请求[^2]。
#### 参数绑定与路径变量
为了使应用更加动态化,在编写API接口时经常需要用到参数传递功能。这可通过两种主要形式完成——查询字符串(`?key=value`) 和 URI模板({variable})。
##### 查询参数
如果希望接收来自客户端提交表单或其他来源的关键字/值对,则可以在目标函数签名处声明相应名称的形式参数,并加上 `RequestParam` 或者直接使用原始名作为形参即可自动注入这些值。
```java
@GetMapping("/search")
public List<Item> searchItems(@RequestParam("query") String query) {
return itemService.search(query);
}
```
##### 路径变量
当需要捕获URL片段内的某些部分做为输入数据时,可采用 `{}` 占位符配合 `@PathVariable` 实现这一点。
```java
@GetMapping("/{category}/items")
public Collection<Item> listCategoryItems(@PathVariable String category) {
return itemRepository.findByCategory(category);
}
```
这两种机制共同作用使得 API 设计更为简洁明了[^3]。
#### 组合变体的最佳实践建议
虽然所有的功能都能由单一的 `@RequestMapping` 完成,但是官方推荐尽可能多地运用它的子类如 `@GetMapping`, `@PostMapping` 等简化开发流程的同时提高代码清晰度。这样做不仅减少了冗余配置还增强了语义表达力。
```java
@PostMapping("/addProduct")
public void addNewProduct(@Valid Product product, BindingResult result) {}
@GetMapping("/products/{productId}")
@ResponseBody
public Product getProductById(@PathVariable long productId){}
```
这种做法遵循了DRY原则(Don't Repeat Yourself),同时也让开发者更容易理解和维护项目结构。
阅读全文
相关推荐












