หลุดพ้นจากนรกคอมเมนต์ Go Swagger - ผมสร้าง Swaggo ขึ้นมา
(marketplace.visualstudio.com)สวัสดีครับ
เคยเครียดกับคอมเมนต์ 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 ได้จริงไหม
ลองใช้ดูแล้วถ้ามีจุดที่ไม่สะดวกหรือมีไอเดียปรับปรุง บอกกันได้เลยครับ!
ยังไม่มีความคิดเห็น