假设我们有一个博客系统,我们可以使用以下 URI 形式来表示博客资源:
- GET /blogs:获取所有博客
- GET /blogs/{id}:获取指定 ID 的博客
- POST /blogs:创建新的博客
- PUT /blogs/{id}:更新指定 ID 的博客
- DELETE /blogs/{id}:删除指定 ID 的博客
客户端可以使用 HTTP 方法来请求这些资源,如 GET /blogs 可以获取所有博客,GET /blogs/1 可以获取 ID 为 1 的博客,POST /blogs 可以创建新的博客,PUT /blogs/1 可以更新 ID 为 1 的博客,DELETE /blogs/1 可以删除 ID 为 1 的博客。
服务端可以根据 HTTP 方法和 URI 来处理客户端的请求,并返回相应的结果。例如,GET /blogs 可以返回所有博客的列表,GET /blogs/1 可以返回 ID 为 1 的博客的详细信息,POST /blogs 可以创建新的博客并返回新博客的 ID,PUT /blogs/1 可以更新 ID 为 1 的博客并返回更新后的博客信息,DELETE /blogs/1 可以删除 ID 为 1 的博客并返回删除成功的状态码。
以下是一个简单的 Java 后台代码的展示,实现了一个 RESTful API 的示例:
@RestController
@RequestMapping("/blogs")
public class BlogController {
@Autowired
private BlogService blogService;
@GetMapping
public List<Blog> getAllBlogs() {
return blogService.getAllBlogs();
}
@GetMapping("/{id}")
public Blog getBlogById(@PathVariable Long id) {
return blogService.getBlogById(id);
}
@PostMapping
public Long createBlog(@RequestBody Blog blog) {
return blogService.createBlog(blog);
}
@PutMapping("/{id}")
public Blog updateBlog(@PathVariable Long id, @RequestBody Blog blog) {
return blogService.updateBlog(id, blog);
}
@DeleteMapping("/{id}")
public void deleteBlog(@PathVariable Long id) {
blogService.deleteBlog(id);
}
}
通过 @RestController 注解标识该类为一个 RESTful API 的控制器。使用 @RequestMapping 注解标识该控制器处理的请求路径为 /blogs。
使用 @GetMapping、@PostMapping、@PutMapping 和 @DeleteMapping 注解分别处理 GET、POST、PUT 和 DELETE 方法的请求,通过 @PathVariable 注解获取 URI 中的参数,通过 @RequestBody 注解获取请求体中的数据。