2.8 KiB
2.8 KiB
Swagger Documentation
This document explains how to access and update the Swagger documentation for the Time Tracker API.
Accessing Swagger UI
After starting the backend server, access the Swagger UI at:
http://localhost:8080/swagger/index.html
This interactive interface allows you to:
- Browse all available API endpoints
- See request parameters and response formats
- Test API calls directly from the browser
Updating Swagger Documentation
To update the Swagger documentation for the Time Tracker API, follow these steps:
-
Add or update Swagger annotations in your code
- Annotations should be added as comments above handler functions
- Use the correct types in annotations (e.g.,
dto.ActivityDto
instead ofutils.ActivityResponse
) - Make sure all parameters, responses, and types are properly documented
-
Run the Swagger generation command
cd backend && swag init -g cmd/api/main.go --output docs
This command:
- Uses
swag
CLI tool to parse your code - Looks for the main entry point in
cmd/api/main.go
- Outputs the generated files to the
docs
directory
- Uses
-
Verify the generated files The command will generate or update three files:
docs/docs.go
- Go code for the Swagger documentationdocs/swagger.json
- JSON representation of the APIdocs/swagger.yaml
- YAML representation of the API
-
Common issues and solutions
- If you encounter "cannot find type definition" errors, check that you're using the correct type names in your annotations
- If endpoints are missing, ensure they have proper Swagger annotations
- If you change the base path or other global settings, update them in the
main.go
file annotations
Swagger Annotation Examples
Main API Information
In main.go
:
// @title Time Tracker API
// @version 1.0
// @description This is a simple time tracker API.
// @host localhost:8080
// @BasePath /api
// @securityDefinitions.apikey BearerAuth
// @in header
// @name Authorization
Endpoint Documentation
Example from a handler function:
// GetActivities handles GET /activities
//
// @Summary Get all activities
// @Description Get a list of all activities
// @Tags activities
// @Accept json
// @Produce json
// @Security BearerAuth
// @Success 200 {object} utils.Response{data=[]dto.ActivityDto}
// @Failure 401 {object} utils.Response{error=utils.ErrorInfo}
// @Failure 500 {object} utils.Response{error=utils.ErrorInfo}
// @Router /activities [get]
func (h *ActivityHandler) GetActivities(c *gin.Context) {
// Function implementation
}
Remember that the Swagger documentation is generated from the annotations in your code, so keeping these annotations up-to-date is essential for accurate API documentation.