你有没有遇到过这种情况:项目赶工期,光是写ref="/tag/42/" style="color:#E3A3CF;font-weight:bold;">接口就花掉大半天?参数解析不对、返回格式混乱、路径拼错……光是调试这些基础问题就让人头大。其实,用对Spring Boot的接口定义注解,很多麻烦都能自动绕开,省下的不仅是时间,还有加班费。
@RequestMapping:最常用的入口
这个注解就像你家的大门,决定了哪个URL能进来。它可以加在类或方法上,用来指定请求路径。比如你要做一个查商品的接口,可以直接这么写:
@RequestMapping("/product")
public class ProductController {
@RequestMapping(value = "/list", method = RequestMethod.GET)
public List<Product> getProducts() {
return productService.findAll();
}
}
@GetMapping 和 @PostMapping:更简洁的选择
上面那种写法虽然能用,但有点啰嗦。Spring Boot贴心地提供了快捷方式。@GetMapping 就是专门处理GET请求的,比写 method = RequestMethod.GET 清爽多了:
@GetMapping("/product/{id}")
public Product getProductById(@PathVariable Long id) {
return productService.findById(id);
}
同理,@PostMapping 处理提交数据,比如用户下单:
@PostMapping("/order")
public String createOrder(@RequestBody Order order) {
orderService.save(order);
return "success";
}
@PathVariable 和 @RequestParam:拿参数就这么简单
很多人搞不清什么时候用哪个。举个生活化的例子:你去快递点取件,柜子编号是路径的一部分(比如 /package/123),那就用 @PathVariable;如果你输入手机号查包裹,手机号是查询参数(/package?phone=138xxxx),那就用 @RequestParam。
@GetMapping("/package/{boxId}")
public PackageInfo getPackage(@PathVariable String boxId,
@RequestParam String phone) {
return packageService.findByBoxAndPhone(boxId, phone);
}
@RequestBody:接前端传来的JSON
现在前后端分离是常态,前端常发个JSON过来。这时候别傻傻地一个个取参数,直接用 @RequestBody 接整个对象:
@PostMapping("/login")
public User login(@RequestBody LoginRequest request) {
return userService.authenticate(request.getUsername(), request.getPassword());
}
@ResponseBody 和@RestController:自动转JSON不用操心
以前要手动把对象转成JSON字符串,现在只要加上 @ResponseBody,Spring Boot自动帮你搞定。更省事的是直接用 @RestController,它等于 @Controller 加上所有方法都带 @ResponseBody:
@RestController
@RequestMapping("/api/user")
public class UserController {
@GetMapping("/{id}")
public User getUser(@PathVariable Long id) {
return userService.getById(id);
}
}
这些注解看起来小,用好了却能大幅减少样板代码。少写几行代码,不只是少敲几个键,关键是出错概率低了,测试快了,上线早了,月底还能准时下班。省下的时间,陪家人、学新技能、甚至多睡一觉,不比加班香吗?