Knife4j是一个基于Swagger的Java后端API文档生成工具,通过集成Swagger UI和Swagger Bootstrap UI可以快速创建美观易用的API文档。
在Spring Boot 项目中,使用Knife4j可以简单地添加Swagger UI和Swagger Bootstrap UI的依赖,然后使用注解标记API接口和参数, Knife4j将自动生成文档。
- 添加依赖
在项目的构建文件中(例如build.gradle或pom.xml)添加Knife4j的依赖:
Maven:
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
<version>4.1.0</version>
</dependency>
Gradle:
implementation group: 'com.github.xiaoymin', name: 'knife4j-spring-ui', version: '{version}
3.标记api接口和参数
package com.example.demo.controller;
import com.example.demo.bean.Order;
import com.example.demo.model.OrderDao;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.net.URI;
import java.util.List;
@RestController
@RequestMapping("/api/orders")
@Tag(name = "订单管理")
public class OrderApi {
private final OrderDao orderDao;
public OrderApi(OrderDao orderDao) {
this.orderDao = orderDao;
}
@Operation(summary = "获取订单")
@GetMapping
public ResponseEntity<List<Order>> findAllOrders() {
List<Order> orders = orderDao.findAllOrders();
if (orders.isEmpty()) {
return ResponseEntity.notFound().build();
}
return ResponseEntity.ok().body(orders);
}
@GetMapping("/{id}")
public ResponseEntity<Order> findOrderById(@PathVariable String id) {
Order order = orderDao.findOrderById(id);
if (order == null) {
return ResponseEntity.notFound().build();
}
return ResponseEntity.ok().body(order);
}
@Operation(summary = "创建订单")
@PostMapping
public ResponseEntity<Order> createOrder(@RequestBody Order order) {
Order savedOrder = orderDao.createOrder(order);
return ResponseEntity.created(URI.create("/api/orders/" + savedOrder.getId())).body(savedOrder);
}
@Operation(summary = "修改订单")
@PutMapping("/{id}")
public ResponseEntity<Order> updateOrder(@PathVariable String id, @RequestBody Order order) {
Order savedOrder = orderDao.updateOrder(id, order);
return ResponseEntity.ok().body(savedOrder);
}
@Operation(summary = "删除订单")
@DeleteMapping("/{id}")
public ResponseEntity<Void> deleteOrder(@PathVariable String id) {
orderDao.deleteOrder(id);
return ResponseEntity.ok().build();
}
}
4.运行应用程序
运行项目,并在浏览器中访问http://localhost:8080/doc.html,就可以看到生成的Knife4j文档。