Swagger API Golang | Step by Step Menggunakan Swaggo
Swagger adalah tools dokumentasi API yang sangat membantu dalam menjelaskan dan mencoba endpoint secara interaktif. Di Golang, kita bisa menggunakan [swaggo/swag](https://github.com/swaggo/swag) untuk mengenerate dokumentasi dari komentar di kode.
1. โ Install Swag CLI
Pertama-tama, install command-line tool swag:
go install github.com/swaggo/swag/cmd/swag@latest> swag akan membaca komentar-komentar di atas handler untuk menghasilkan dokumentasi OpenAPI secara otomatis.
2. ๐ Tambahkan Komentar Swagger di Atas Controller
Tambahkan komentar berformat swag di atas fungsi controller. Contoh pada endpoint BookSeat:
// BookSeat godoc
// @Summary Book Seat
// @Description Book Event Seat
// @Tags book
// @Accept json
// @Produce json
// @Param request body request.BookingCreateRequest true "Book Seat"
// @Success 201 {object} response.SuccessResponse
// @Failure 400 {object} response.ErrorResponse
// @Router /api/book-seat [post]Penjelasan per baris:
* @Summary: Deskripsi singkat endpoint.
* @Description: Penjelasan lebih lengkap.
* @Tags: Kategori endpoint (bisa untuk gruping di UI Swagger).
* @Accept/@Produce: Format request/response.
* @Param: Parameter yang dikirim (body, path, query).
* @Success/@Failure: Response untuk status code tertentu.
* @Router: Jalur endpoint dan metode HTTP-nya.
3. โ๏ธ Jalankan swag init
Perintah ini akan membaca komentar @... dan menghasilkan dokumentasi di folder docs/:
swag initHasilnya:
* docs/docs.go
* docs/swagger.json
* docs/swagger.yaml
4. ๐ฆ Install HTTP Swagger Middleware
Tambahkan dependency swaggo/http-swagger:
go get github.com/swaggo/http-swagger5. ๐ Setup Endpoint Swagger di Router
Karena kita menggunakan httprouter, dan httpSwagger.WrapHandler mengembalikan http.Handler, kita perlu adapter:
import (
"github.com/julienschmidt/httprouter"
httpSwagger "github.com/swaggo/http-swagger"
"net/http"
)
func adaptHandler(h http.Handler) httprouter.Handle {
return func(w http.ResponseWriter, r *http.Request, _ httprouter.Params) {
h.ServeHTTP(w, r)
}
}
router.GET("/docs/*any", adaptHandler(httpSwagger.WrapHandler))6. ๐ Tambahkan Contoh (Example) di Struct Request & Response
Tambahkan tag example agar Swagger menampilkan contoh nilai.
type BookingCreateRequest struct {
EventId int `json:"event_id" example:"1"`
SeatId int `json:"seat_id" example:"2"`
UserId int `json:"user_id" example:"14"`
}
type SuccessResponse struct {
Code int `json:"code" example:"201"`
Message string `json:"message" example:"created"`
}
type ErrorResponse struct {
Code int `json:"code" example:"400"`
Message string `json:"message" example:"bad request"`
}> Contoh di atas akan langsung terlihat di Swagger UI sebagai contoh payload.
7. ๐ Jalankan Aplikasi
Pastikan server Golang kamu jalan, lalu buka Swagger-nya:
http://localhost:3000/docs/index.html๐งช Hasil Akhir Swagger
Tampilan Swagger akan menampilkan endpoint POST /api/book-seat lengkap dengan:
* Deskripsi
* Contoh request
* Contoh response
* Tombol "Try it out" untuk testing langsung
๐ฆ Rangkuman Struktur Folder
project/
โโโ controller/
โ โโโ booking_controller.go <-- komentar Swagger di sini
โโโ request/
โ โโโ booking_request.go <-- BookingCreateRequest
โโโ response/
โ โโโ response.go <-- SuccessResponse, ErrorResponse
โโโ docs/ <-- hasil dari swag init
โโโ main.go๐ Penutup
Dengan setup Swagger ini, dokumentasi API kamu jadi otomatis, rapi, dan bisa langsung dicoba. Cocok untuk tim besar atau saat kerja sama dengan frontend developer.
More Articles
You might also like
๐ง Latihan Pointer di Golang
โ Soal 1 - Dasar Pointer Deskripsi:Buat program yang: Membuat variabel angka dengan nilai 5 Menampilkan alamat dari variabel tersebut Menyimpan alamatnya ke variabel pointer Tampilkan nilai dari pointer Contoh Output: Alamat dari angka: 0xc0000...
Package strings dan strconv di Golang
Setelah sebelumnya membahas fmt, errors, os, dan flag, kali ini kita akan membahas dua package penting lainnya dalam standard library Go, yaitu strings dan strconv. Keduanya sangat berguna untuk memproses dan memanipulasi string dan konversi data โ k...
Membuat Goroutine di Golang
Halo teman-teman! Selamat datang di tutorial pertama tentang Goroutine di Golang. Jika kamu baru belajar pemrograman atau baru mengenal Go, jangan khawatir. Artikel ini akan menjelaskan konsep Goroutine dengan bahasa yang sederhana dan mudah dipahami...