在SpringMVC
框架中,@RequestMapping
用于映射HTTP请求
到控制器类
或控制器类中方法
。
这个注解可以应用在类级别
或方法级别
上。
@Controller
@RequestMapping("/api/v1")
public class MyApiController {
@GetMapping("/users/{userId}")
public ResponseEntity<User> getUser(@PathVariable("userId") Long id) {
User user = userService.findById(id);
if (user == null) {
return ResponseEntity.notFound().build();
}
return ResponseEntity.ok(user);
}
@PostMapping("/users")
public ResponseEntity<User> createUser(@RequestBody User newUser) {
User createdUser = userService.createUser(newUser);
return ResponseEntity.created(URI.create("/api/v1/users/" + createdUser.getId())).body(createdUser);
}
@PutMapping("/users/{userId}")
public ResponseEntity<User> updateUser(@PathVariable("userId") Long id, @RequestBody User updatedUser) {
// 更新用户逻辑...
return ResponseEntity.ok(updatedUser);
}
@DeleteMapping("/users/{userId}")
public ResponseEntity<Void> deleteUser(@PathVariable("userId") Long id) {
userService.deleteById(id);
return ResponseEntity.noContent().build();
}
}
@Controller
@RequestMapping("/orders")
public class OrderController {
@GetMapping("/{id}")
public String getOrderDetails(@PathVariable("id") Long orderId,
@RequestParam(name = "includeHistory", required = false, defaultValue = "false") boolean includeHistory) {
// 获取订单详情以及根据请求参数决定是否包含历史记录...
return "order-details";
}
}
@Controller
@RequestMapping("/search")
public class SearchController {
@GetMapping
public String search(@RequestParam(value = "q", required = false, defaultValue = "") String query,
@RequestHeader(value = "X-Search-Preferences", required = false) String preferences) {
// 搜索逻辑,基于query参数和header中的偏好信息...
return "search-results";
}
}
@Controller
@RequestMapping("/documents/**")
public class DocumentController {
@GetMapping
public String listDocuments() {
// 列出所有文档逻辑...
return "document-list";
}
@GetMapping("/{docId}")
public String viewDocument(@PathVariable("docId") String docId) {
// 查看特定文档逻辑...
return "document-view";
}
}
@Controller
@RequestMapping("/api")
public class MediaTypeController {
@GetMapping(path = "/data", produces = "application/json")
public MyData getJsonData() {
// 返回JSON格式的数据...
return new MyData();
}
@GetMapping(path = "/data", produces = "application/xml")
public MyData getXmlData() {
// 返回XML格式的数据...
return new MyData();
}
@PostMapping(path = "/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public ResponseEntity<String> handleFileUpload(@RequestParam("file") MultipartFile file) {
// 处理文件上传逻辑...
return ResponseEntity.ok("File uploaded successfully");
}
}