web

package module
v0.55.0 Latest Latest
Warning

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

Go to latest
Published: Aug 7, 2022 License: MIT Imports: 11 Imported by: 69

README

web

Test Go Report Card codecov PkgGoDev Go version License

web 是一个比较完整的 API 开发框架,相对于简单的路由,提供了更多的便利功能。 如果你只是需要一个简单的路由工具,那么你可以移步到 mux

package main

import "github.com/issue9/web"

// main.go
func main() {
    srv, _ := web.NewServer("web", "1.0.0", &web.Options{})

    m1.Module(srv.NewModule("m1", web.Phrase("desc")))
    m2.Module(srv.NewModule("m2", web.Phrase("desc"))

    srv.Serve()
}

// modules/m1/module.go
func Module(m *web.Module) error {
    m.Action("serve").AddRoutes(func(r*web.Router){
        r.Get("/admins", getAdmins).
            Get("/groups", getGroups)
    })
}

// modules/m2/module.go
func Module(m *web.Module) error {
    m.Action("serve").AddRoutes(func(r*web.Router){
        r.Get("/admins", getAdmins).
            Get("/groups", getGroups)
    })
}

字符集和文档类型

文档类型由 Server.Mimetypes 指定。 字符类型无需用户指定,https://www.iana.org/assignments/character-sets/character-sets.xhtml 中列出的字符集都能自动转换。

import "github.com/issue9/web"

srv := web.NewServer("app", "1.0.0", &web.Options{})

srv.Mimetypes().Add("application/json", json.Marshal, json.Unmarshal)
srv.Mimetypes().Add("application/xml", xml.Marshal, xml.Unmarshal)

srv.Serve()

客户端只要在请求时设置 Accept 报头就可返回相应类型的数据,而 Accept-Charset 报头可设置接收的字符集。 Content-Type 则可以有向服务器指定提交内容的文档类型和字符集。

错误处理

框架提供了一种输出错误信息内容的机制,用户只需要实现 Problem 接口,即可自定义输出的错误信息格式。 可参考内置的 RFC7807 实现:server.rfc7807

中间件

https://github.com/issue9/middleware 提供了部分中间件。

版权

本项目采用 MIT 开源授权许可证,完整的授权说明可在 LICENSE 文件中找到。

Documentation

Overview

Package web 模块化的 web 框架

NOTE: 所有以 Internal 开头的公开函数,表示这个函数是仅模块可见的。

Index

Constants

View Source
const Version = "0.55.0"

Version 当前框架的版本

Variables

This section is empty.

Functions

func Errors added in v0.53.1

func Errors(err ...error) error

Errors 合并多个非空错误为一个错误

func StackError added in v0.51.1

func StackError(err error) error

StackError 为 err 带上调用信息

位置从调用 StackError 开始。 如果 err 为 nil,则返回 nil,如果 err 本身就为 StackError 返回的类型,则原样返回。

如果需要输出调用堆栈信息,需要指定 %+v 标记。

Types

type Context

type Context = server.Context

type HandlerFunc added in v0.33.0

type HandlerFunc = server.HandlerFunc

type LocaleStringer added in v0.43.0

type LocaleStringer = localeutil.LocaleStringer

LocaleStringer 本地化字符串需要实在的接口

部分 error 返回可能也实现了该接口。

func Phrase added in v0.42.0

func Phrase(key message.Reference, v ...any) LocaleStringer

Phrase 生成本地化的语言片段

type Logger added in v0.50.2

type Logger = logs.Logger

type Middleware added in v0.33.0

type Middleware = server.Middleware

type MiddlewareFunc added in v0.46.0

type MiddlewareFunc = server.MiddlewareFunc

type Module

type Module = server.Module

type Options added in v0.34.0

type Options = server.Options

type Responser added in v0.40.0

type Responser = server.Responser

func Created added in v0.43.0

func Created(v any, location string) Responser

func NoContent added in v0.43.0

func NoContent() Responser

func NotFound added in v0.43.0

func NotFound() Responser

func NotImplemented added in v0.44.0

func NotImplemented() Responser

func OK added in v0.44.0

func OK(v any) Responser

OK 返回 200 状态码下的对象

func Object added in v0.40.0

func Object(status int, body any, kv ...string) Responser

Object 输出状态和对象至客户端

body 表示需要输出的对象,该对象最终会被转换成相应的编码; kv 为报头,必须以偶数数量出现,奇数位为报头名,偶数位为对应的报头值;

func Redirect added in v0.49.0

func Redirect(status int, url string) Responser

Redirect 重定向至新的 URL

func RetryAfter added in v0.46.0

func RetryAfter(status int, seconds uint64, location string) Responser

RetryAfter 返回 Retry-After 报头内容

一般适用于 301 和 503 报文。

status 表示返回的状态码;seconds 表示秒数,如果想定义为时间格式, 可以采用 RetryAt 函数,两个功能是相同的,仅是时间格式上有差别。 如果 status 为 301,那么应当还要指定 location 值;

func RetryAt added in v0.46.0

func RetryAt(status int, at time.Time, location string) Responser

func Status added in v0.40.0

func Status(code int, kv ...string) Responser

Status 仅向客户端输出状态码和报头

kv 为报头,必须以偶数数量出现,奇数位为报头名,偶数位为对应的报头值;

type Router added in v0.34.0

type Router = server.Router

type Rule added in v0.55.0

type Rule = validation.Rule

func NewRule added in v0.53.1

func NewRule(v Validator, key message.Reference, val ...any) *Rule

NewRule 新建验证规则

type Server added in v0.25.0

type Server = server.Server

func NewServer added in v0.34.0

func NewServer(name, version string, o *Options) (*Server, error)

NewServer 从 Options 初始化 Server 对象

type ValidateFunc added in v0.55.0

type ValidateFunc = validation.ValidateFunc

type Validator added in v0.34.0

type Validator = validation.Validator

Directories

Path Synopsis
Package app 为构建程序提供相对简便的方法
Package app 为构建程序提供相对简便的方法
cmd
web Module
internal
encoding
Package encoding 处理 Accept-encoding 报头内容
Package encoding 处理 Accept-encoding 报头内容
header
Package header 与报头相关的处理方法
Package header 与报头相关的处理方法
locale
Package locale 本地化相关的功能
Package locale 本地化相关的功能
serialization
Package serialization 序列化相关的功能实现
Package serialization 序列化相关的功能实现
Package locales 为 web 包提供了本地化的内容
Package locales 为 web 包提供了本地化的内容
Package serializer 序列化相关的接口定义
Package serializer 序列化相关的接口定义
form
Package form 用于处理 www-form-urlencoded 编码
Package form 用于处理 www-form-urlencoded 编码
html
Package html 提供输出 HTML 内容的解码函数
Package html 提供输出 HTML 内容的解码函数
jsonp
Package jsonp JSONP 序列化操作
Package jsonp JSONP 序列化操作
text
Package text 针对文本内容的编解码实现
Package text 针对文本内容的编解码实现
text/testobject
Package testobject 用于 text 测试对象
Package testobject 用于 text 测试对象
Package server 服务管理
Package server 服务管理
servertest
Package servertest 针对 server 的测试用例
Package servertest 针对 server 的测试用例
Package service 服务管理
Package service 服务管理
Package validation 验证功能
Package validation 验证功能

Jump to

Keyboard shortcuts

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