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