Help us shape the future of Go! Take the 2026 Go Developer Survey

httpapi

package
v0.3.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 2, 2026 License: MIT Imports: 21 Imported by: 0

Documentation

Overview

Package httpapi — версионируемый REST API /api/v1 на net/http, монтируемый в роутер сайта. Тонкий транспорт над сервисным слоем: аутентификация, авторизация и лимитирование — вне модуля (docs/plan/01-architecture.md §2.6).

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type API

type API struct {
	// contains filtered or unexported fields
}

API — версионируемый REST API /api/v1: тонкий транспорт над сервисным слоем приложения (без бизнес-логики), монтируемый в роутер сайта. Безопасен для одновременного использования несколькими горутинами.

func New

func New(app *service.App, cfg Config) *API

New создаёт API над приложением. Приложение остаётся открытым на стороне сайта (App.Close — обязанность владельца). Набор маршрутов строится один раз (suggest отключается конфигурацией — исключается из набора).

func (*API) Handler

func (a *API) Handler() http.Handler

Handler возвращает http.Handler REST /api/v1 для монтирования в роутер сайта (http.ServeMux: mux.Handle("/api/v1/", api.Handler())).

func (*API) ServeHTTP

func (a *API) ServeHTTP(w http.ResponseWriter, r *http.Request)

ServeHTTP — диспетчер: сопоставление пути и метода, slog-контекст запроса, хук метрик; JSON-модель ошибок — на всех ответах.

type Config

type Config struct {
	Log            *slog.Logger
	DisableSuggest bool
	Metrics        Metrics
}

Config — конфигурация REST API (docs/plan/01-architecture.md §3: без глобальных переменных; конфигурацию передаёт сайт). DisableSuggest отключает GET /api/v1/suggest — хендлер не монтируется (docs/plan/04-module- functionality.md §2); Metrics — хук метрик сайта.

type Metrics

type Metrics interface {
	Observe(op string, status int, errCode string, duration time.Duration)
}

Metrics — хук метрик REST (docs/plan/04-module-functionality.md §5): счётчики и длительности вызовов по операциям; реализация — на стороне сайта, модуль свой экспорт метрик не заводит. errCode — код ошибки домена ("" — успешный запрос).

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL