Charticulator终极指南:5步掌握专业级图表定制艺术
2025/12/17 13:25:25
RESTful(Representational State Transfer)是基于 HTTP 协议的接口设计规范,Java 作为主流后端开发语言,凭借 Spring 生态等工具能高效实现符合 RESTful 规范的接口开发,以下是核心知识点与实操要点:
/users(而非/getUsers/addUser)。| HTTP 方法 | 操作含义 | 示例场景 |
|---|---|---|
| GET | 查询 / 获取资源 | GET /users(查所有用户)、GET /users/1(查 ID=1 的用户) |
| POST | 创建资源 | POST /users(新增用户) |
| PUT | 全量更新资源 | PUT /users/1(更新 ID=1 用户的所有信息) |
| PATCH | 增量更新资源 | PATCH /users/1(仅更新 ID=1 用户的手机号) |
| DELETE | 删除资源 | DELETE /users/1(删除 ID=1 用户) |
json
{ "code": 200, "msg": "操作成功", "data": { "id": 1, "name": "张三" } }Spring Boot 简化了配置,Spring MVC 天然支持 RESTful 开发,是最主流的组合:
xml
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>| 注解 | 作用 | 示例 |
|---|---|---|
@RestController | 标识 REST 接口控制器(返回 JSON,无需@ResponseBody) | @RestController public class UserController {} |
@RequestMapping | 映射 URL 与 HTTP 方法(可细化为@GetMapping/@PostMapping等) | @GetMapping("/users") |
@PathVariable | 获取 URL 路径参数 | @GetMapping("/users/{id}") public User getById(@PathVariable Long id) {} |
@RequestParam | 获取 URL 请求参数 | @GetMapping("/users") public List<User> list(@RequestParam(required = false) String name) {} |
@RequestBody | 获取 POST/PUT 请求体中的 JSON 数据 | @PostMapping("/users") public Result add(@RequestBody User user) {} |
spring-boot-starter-validation,通过@NotNull/@NotBlank/@Pattern等注解校验请求参数;@RestControllerAdvice+@ExceptionHandler,全局统一处理接口异常。java
运行
public class User { private Long id; @NotBlank(message = "用户名不能为空") private String name; @Pattern(regexp = "^1[3-9]\\d{9}$", message = "手机号格式错误") private String phone; // 省略getter/setter }java
运行
public class Result<T> { private Integer code; private String msg; private T data; // 静态构造方法 public static <T> Result<T> success(T data) { return new Result<>(200, "操作成功", data); } public static <T> Result<T> error(Integer code, String msg) { return new Result<>(code, msg, null); } // 省略构造方法、getter/setter }java
运行
@RestController @RequestMapping("/users") public class UserController { // 模拟数据 private static Map<Long, User> userMap = new HashMap<>(); static { userMap.put(1L, new User(1L, "张三", "13800138000")); } // 查询所有用户 @GetMapping public Result<List<User>> list() { List<User> users = new ArrayList<>(userMap.values()); return Result.success(users); } // 根据ID查询用户 @GetMapping("/{id}") public Result<User> getById(@PathVariable Long id) { User user = userMap.get(id); if (user == null) { return Result.error(404, "用户不存在"); } return Result.success(user); } // 新增用户 @PostMapping public Result<User> add(@Valid @RequestBody User user, BindingResult bindingResult) { // 参数校验 if (bindingResult.hasErrors()) { String msg = bindingResult.getFieldError().getDefaultMessage(); return Result.error(400, msg); } Long id = userMap.size() + 1L; user.setId(id); userMap.put(id, user); return Result.success(user); } // 删除用户 @DeleteMapping("/{id}") public Result<Void> delete(@PathVariable Long id) { userMap.remove(id); return Result.success(null); } }/v1/users、/v2/users;Accept: application/vnd.company.v1+json。GET /users?page=1&size=10&sort=id,desc;@Async实现异步返回,提升并发能力。@CrossOrigin注解或全局 CORS 配置;@JsonFormat/@JsonProperty)定制字段转换规则;