Agent skill

api-endpoint-pattern

Standards for creating and organizing HTTP API endpoints using the Echo framework

Stars 163
Forks 31

Install this agent skill to your Project

npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/data/api-endpoint-pattern

SKILL.md

API Endpoint Pattern Skill

Use this skill when adding or modifying HTTP endpoints in the API.


Scope

  • Creating new API endpoints
  • Adding new domain routers
  • Modifying handler logic

Router Structure

Main Router (internal/router/router.go)

Initializes Echo, sets up middleware, and groups routes by domain.

Sub-Routers (internal/router/[domain]/router.go)

Each domain has its own sub-router with a Bind function that receives an *echo.Group and dependencies.

go
func Bind(e *echo.Group, db *sql.DB) *echo.Group {
    e.GET("/list", func(c echo.Context) error {
        // handler logic
    })
    return e
}

Adding a New Endpoint

  1. If introducing a new domain, create internal/router/[domain]/router.go.
  2. Implement a Bind(e *echo.Group, db *sql.DB) *echo.Group function.
  3. Register the sub-router in internal/router/router.go:
    go
    domainrouter.Bind(api.Group("/domain"), config.DB.Conn)
    
  4. Implement data access logic in internal/models/ if needed.

Handler Guidelines

  • Parameter Parsing: Use helper functions for complex query params (e.g., trader levels).
  • Dependency Injection: Pass *sql.DB into Bind, then into handlers. Avoid globals.
  • Response Handling:
    • Success: c.JSON(200, data) or c.String(200, "OK")
    • Error: c.String(code, err.Error()) — log significant errors with zerolog.
  • Business Logic: Keep handlers thin. Move complex logic to internal/models/ or other internal packages.

Conventions

  • Use e.Group() for logical route separation.
  • Use plural names for collections (/items, /weapons).
  • Use query parameters for filtering and optional configuration.
  • Prefer HTTP status constants for consistency, but be consistent either way.

Didn't find tool you were looking for?

Be as detailed as possible for better results