Documentation ¶
Overview ¶
Обработка прикладных HTTP запросов
Описание структур для API и инициализация ¶
Описание структур для API и инициализация
Index ¶
- Constants
- Variables
- func AddTag(tag *Tag) error
- func BadRequest(msg string, v ...any) (code int, err error)
- func CheckPeriod(from time.Time, to time.Time, maxPeriod time.Duration, stdPeriod time.Duration) (normFrom time.Time, normTo time.Time, code int, err error)
- func Enumerate(e Enumerator) (err error)
- func FindSubstArg(vars []any, name string) (subst *db.SubstArg)
- func GetTagName(name string) string
- func Handler(h *stdhttp.HTTP, id uint64, prefix string, urlPath string, ...) (basePath string, processed bool)
- func HandlerEx(find FindModule, extra any, h *stdhttp.HTTP, id uint64, prefix string, ...) (basePath string, processed bool)
- func Init(cfg any, hh *stdhttp.HTTP, basePath string, defaultDB string, ...) (err error)
- func InternalServerError(msg string, v ...any) (code int, err error)
- func ModuleRegistration(handler API) (err error)
- func NotAllowed(msg string, v ...any) (code int, err error)
- func NotFound(msg string, v ...any) (code int, err error)
- func NotImplemented(msg string, v ...any) (code int, err error)
- func ParseTime(s string) (t time.Time, err error)
- func RemoveModuleRegistration(handler API) (err error)
- func Start() (err error)
- type API
- type Enumerator
- type ExecResult
- type ExecResultRow
- type ExternalDocs
- type FieldDef
- type FindModule
- type FuncAfter
- type FuncBefore
- type FuncInit
- type Info
- type Module
- type ProcOptions
- func (proc *ProcOptions) Create() (result any, code int, err error)
- func (proc *ProcOptions) Delete() (result any, code int, err error)
- func (proc *ProcOptions) Get() (result any, code int, err error)
- func (proc *ProcOptions) Others() (result any, code int, err error)
- func (proc *ProcOptions) Update() (result any, code int, err error)
- type Tag
- type Tags
Constants ¶
View Source
const ( FlagLogUnknownParams = 0x00000001 // Логировать полученные query параметры, которые не описаны в методе FlagConvertReplyToJSON = 0x00000008 // Конвертировать ответ в json? Если он будет заранее подготовлен уже в таком формате, то НЕ СТАВИТЬ этот флаг! StatusProcessed = 999 // Специальный тип возврата, говорящий о том, что уже все ответы отправлены // Использовать по возможности стандартные имена! ParamCount = "count" ParamPeriodFrom = "from" // включая ParamPeriodTo = "to" // НЕ включая ParamIDs = "ids" ParamNames = "names" // Стандартные Scope цепочек разбора пути, они же и суффиксы именён запросов в базу ScopeSelectAll = "select.all" ScopeSelectID = "select.id" ScopeSelectGUID = "select.guid" ScopeSelectName = "select.name" ScopeSelectPattern = "select.pattern" ScopeSelectStatus = "select.status" ScopeInsert = "insert" ScopeUpdateID = "update.id" ScopeUpdateGUID = "update.guid" ScopeUpdateName = "update.name" ScopeDeleteID = "delete.id" ScopeDeleteGUID = "delete.guid" ScopeDeleteName = "delete.name" // Признак статуса StatusActive = "active" StatusInactive = "inactive" ExprID = "id" ExprGUID = "guid" ExprName = "name" ExprPattern = "pattern" // Стандартные регулярки для Expr REempty = `` REany = `.+` REid = `\d+` REstatus = StatusActive + "|" + StatusInactive REguid = `(?i)([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})` ExecResultName = "execResult" DefaultMaxCount = 10000 DefaultMaxPeriod = config.Duration(3600 * time.Second) StatusRetry = 999 // Специальный http status, возвращаемый из After для повторного выполнения GET запроса (с возможно измененными там параметрами) )
Variables ¶
View Source
var (
Log = log.NewFacility("api") // Log facility
)
Functions ¶
func CheckPeriod ¶
func Enumerate ¶
func Enumerate(e Enumerator) (err error)
func FindSubstArg ¶ added in v2.0.27
func GetTagName ¶ added in v2.0.18
func Handler ¶
func Handler(h *stdhttp.HTTP, id uint64, prefix string, urlPath string, w http.ResponseWriter, r *http.Request) (basePath string, processed bool)
Обработчик прикладных HTTP запросов
func ModuleRegistration ¶
func RemoveModuleRegistration ¶ added in v2.0.11
Types ¶
type API ¶
type API interface { // Получение информации о методе Info() *Info // Вызывается перед обращением к базе, используется, например, для добавления дополнительных параметров или проверок // Если возвращает code != 0 или result != nil, то они и будут результатом // Если code<0, то result содержит готовый ответ в []byte, отсылаем как есть с кодом -code Before(proc *ProcOptions) (result any, code int, err error) // Вызывается почле обращения к базе, используется, например, для обогащения результата // Если возвращает code != 0 или result != nil, то они и будут результатом // Если code<0, то result содержит готовый ответ в []byte, отсылаем как есть с кодом -code After(proc *ProcOptions) (result any, code int, err error) }
Интерфейс API метода
type Enumerator ¶
type ExecResult ¶
type ExecResult struct { AffectedRows uint64 `json:"affectedRows,omitempty" comment:"Количеcтво затронутых записей"` Rows []ExecResultRow `json:"rows,omitempty" comment:"Созданные записи"` Notice string `json:"notice,omitempty" comment:"Предупреждения и замечания"` }
type ExecResultRow ¶ added in v2.0.17
type ExternalDocs ¶ added in v2.0.18
type FindModule ¶ added in v2.0.42
type FuncBefore ¶
type FuncBefore func(proc *ProcOptions) (result any, code int, err error)
type Info ¶
type Info struct { Path string // Относительный (от базового) путь в URL Name string // Имя, желательно чтобы по правилам имен переменных Summary string // Краткое описание Description string // Описание, по умолчанию сформированное из Summary и query параметров Tags []string // Имена тегов для группировки Flags path.Flags // Флаги Methods *path.Set // Цепочки обработки Config any // Кастомные параметры в конфиг файле CacheLifetime time.Duration // Время жизни кэша, если 0, то не использовать DBtype string // Тип базы. Если пусто, то по умолчанию из конфига QueryPrefix string // Префикс имени запроса в базу Init FuncInit // User defined Init Before FuncBefore // User defined Before query After FuncAfter // User defined After query }
Информация о методе
type Module ¶ added in v2.0.42
type Module struct { RawURL string RelativeURL string // URL без учета базовой части Handler API // Интерфейс метода Info *Info // Информация о методе LogFacility *log.Facility // Log facility }
Обработчик
type ProcOptions ¶
type ProcOptions struct { LogFacility *log.Facility // Предпочтительная facility для логирования H *stdhttp.HTTP // HTTP листенер LogSrc string // Строка с ID запроса для MessageWithSource Info *Info // Информация о методе ID uint64 // ID запроса Prefix string // Префикс пути запроса (при работе через прокси) Path string // Путь запроса Tail []string // Остаток пути R *http.Request // Запрос W http.ResponseWriter // Интерфейс для ответа Chain *path.Chain // Обрабатываемая цепочка ChainParentLocal path.Chains // Копия Chain.Parent для возможности ее модификации для работы с динамическими объектами. Рекомендуется использовать её, а не Chain.Parent Scope string // Обрабатываемый Scope RawBody []byte // Тело запроса. В R.Body уже nil! PathParams any // Path параметры QueryParams any // Query параметры RequestParams any // Request параметры DBqueryName string // Имя запроса к базе данных DBqueryVars []any // Переменные для формирования запроса DBqueryResult any // Результат выполненения запроса (слайс) Fields []misc.InterfaceMap // Поля (имя из sql запроса) для insert или update. Для select - список полей для выборки из базы, если нужны не все из объекта ExcludedFields misc.StringMap // Поля ([name]db_name), которые надо исключить из запроса Notices *misc.Messages // Предупреждения и замечания обработчика ExecResult *ExecResult // Результат выполнения Exec ExtraHeaders misc.StringMap // Дополнительные возвращаемые HTTP заголовки Extra any // Произвольные данные от вызывающего Custom any // Произвольные пользовательские данные // contains filtered or unexported fields }
Опции запроса к методу
func (*ProcOptions) Create ¶
func (proc *ProcOptions) Create() (result any, code int, err error)
Create -- создать
func (*ProcOptions) Delete ¶
func (proc *ProcOptions) Delete() (result any, code int, err error)
Delete -- удалить
func (*ProcOptions) Get ¶
func (proc *ProcOptions) Get() (result any, code int, err error)
Get -- получить данные
Click to show internal directories.
Click to hide internal directories.