สวัสดีครับ

เคยเครียดกับคอมเมนต์ Swagger ตอนพัฒนา API ด้วย Go กันไหมครับ?

ผมต้องเสียเวลาอยู่กับเรื่องแบบนี้ทุกครั้ง:

  • "อาร์กิวเมนต์ตัวที่ 4 ของ // @Param คือ required หรือ description กันแน่นะ..."
  • "พิมพ์ dto.UserRequest ผิด แต่เพิ่งมารู้ตอนรันไทม์"
  • "ต้องค้นหาทุกครั้งว่าคอมเมนต์นี้หมายถึงอะไร"

เพราะงั้นผมเลยสร้างส่วนขยาย VS Code ชื่อ Swaggo ขึ้นมาครับ

ทำงานอย่างไร?

วิธีเดิม:

// @Param id query string true "사용자 ID"  
// @Success 200 {object} dto.UserResponse "성공"  

ต้องจำลำดับ และดูไม่ออกทันทีว่าอะไรคืออะไร

วิธีของ Swaggo:

@Param(name="id", in="query", type=string, required=true, desc="사용자 ID")  
@Success(code=200, schema=dto.UserResponse, desc="성공")  

ทันทีที่พิมพ์ ระบบจะเปลี่ยนเป็นคอมเมนต์ Swagger มาตรฐานให้อัตโนมัติ
ในตัวแก้ไขจะแสดงเป็นรูปแบบ annotation ที่อ่านง่าย ส่วนในไฟล์จริงจะบันทึกเป็นคอมเมนต์มาตรฐาน

ฟีเจอร์หลัก

ชื่อพารามิเตอร์แบบระบุชัดเจน - ไม่ต้องจำลำดับ
IDE autocomplete - เติมชื่อ annotation, คีย์, และชนิดข้อมูลให้อัตโนมัติ
type inference - รู้จัก struct ของ Go โดยอัตโนมัติ
แปลงแบบเรียลไทม์ - พิมพ์แล้วแปลงเป็นคอมเมนต์ Swagger ทันที
แสดงตัวอย่างเมื่อโฮเวอร์ - ดูผลลัพธ์ที่แปลงได้ทันที
snippet - มีเทมเพลต GET/POST ให้

ตัวอย่างการใช้งานจริง

@Summary("교실 생성")  
@Description("새로운 교실을 생성합니다")  
@Tags("classroom", "admin")  
@Accept("json")  
@Produce("json")  
@Param(name="body", in="body", type=dto.CreateClassroomRequest, required=true, desc="교실 생성 요청")  
@Success(code=200, schema=dto.ClassroomResponse, desc="교실 생성 성공")  
@Failure(code=400, schema=echo.HTTPError, desc="잘못된 요청")  
@Router("/classrooms", "post")  

ทำไมถึงสร้างมันขึ้นมา?

ตอนพัฒนาแบ็กเอนด์ด้วย Go ในทีม การดูแลเอกสาร Swagger เป็นเรื่องทรมานมากครับ

ยินดีรับฟีดแบ็ก!

ผมอยากรู้ว่ามันจะช่วยคนที่พัฒนา API ด้วย Go ได้จริงไหม
ลองใช้ดูแล้วถ้ามีจุดที่ไม่สะดวกหรือมีไอเดียปรับปรุง บอกกันได้เลยครับ!

GitHub: https://github.com/NARUBROWN/swaggo.git

ยังไม่มีความคิดเห็น

ยังไม่มีความคิดเห็น