Swagger / OpenAPI

เขียน OpenAPI JSON ใหม่เฉพาะเมื่อมีการเปลี่ยนแปลงในการวิเคราะห์ RouterFunction และแหล่งที่มาของ handler


โหมด endpoint ฟังก์ชัน

ApiAccountRouter.java
java
@Bean
public RouterFunction<ServerResponse> apiAccount(ApiAccountHandler handler) {
  return route()
      .nest(path("/api/account"), builder -> builder
          .nest(path("/search"), search -> search
              .GET("/get-detail/{accountName}", handler::getDetail)
              .GET("/get-list", handler::getList)))
      .build();
}

รวม nested path, HTTP method และ handler method reference เพื่อสร้าง endpoint handler parser จะอนุมาน request body และ response publisher type

SwaggerJsonFileWatcher.Config

watchDirectory

src/main/java พื้นฐาน

swaggerOutputFile

ค่าเริ่มต้น src/main/resources/static/swagger.json

projectMode

ค่าเริ่มต้น FUNCTIONAL_ENDPOINT, ตัวเลือก MVC

addDecompileJar / addDecompileJarClass

การวิเคราะห์ source ของประเภท jar ภายนอก

addSourceClasspath

source/classpath สำหรับการแก้ไขสัญลักษณ์

customTypeMapper

รับ Class และ schema Map เพื่อนำ schema ที่กำหนดเองไปใช้

annotation ที่ปรับปรุงการอนุมาน

java
@SelectedRequestParam(
    key = "pageSize",
    required = false,
    nullable = true,
    type = Integer.class
)
Integer pageSize = request.queryParam("pageSize").map(Integer::valueOf).orElse(null);

@SelectedResponseBody(type = MemberDetailResponse.class)
Mono<MemberDetailResponse> response = service.getDetail(accountName);

เขียนเฉพาะเมื่อมีการเปลี่ยนแปลง

หากผลลัพธ์การสร้างเหมือนกับ JSON ที่มีอยู่ จะไม่เปลี่ยน timestamp ของไฟล์โดยไม่จำเป็น ซึ่งจะช่วยลดการวนรอบการสร้างในโครงสร้างที่ตัวตรวจสอบด้านหน้าตรวจจับการเปลี่ยนแปลงในไฟล์ swagger.