web

package module
v0.50.0 Latest Latest
Warning

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

Go to latest
Published: Apr 1, 2022 License: MIT Imports: 2 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"))
    m2.Module(srv.NewModule("m2"))

    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(&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 则可以有向服务器指定提交内容的文档类型和字符集。

错误处理

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

版权

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

Documentation

Overview

Package web 一个微型的 web 框架

Index

Constants

View Source
const Version = "0.50.0"

Version 当前框架的版本

Variables

This section is empty.

Functions

This section is empty.

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 string, v ...any) LocaleStringer

Phrase 生成本地化的语言片段

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 Result

type Result = server.Result

type ResultFields added in v0.42.0

type ResultFields = server.ResultFields

type Router added in v0.34.0

type Router = server.Router

type RouterOptions added in v0.50.0

type RouterOptions = server.RouterOptions

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 对象

Directories

Path Synopsis
Package app 提供构建程序的简便方法 NOTE: app 并不是必须的,只是为用户提供了一种简便的方式构建程序, 相对地也会有诸多限制,如果觉得不适用,可以自行调用 server.New。
Package app 提供构建程序的简便方法 NOTE: app 并不是必须的,只是为用户提供了一种简便的方式构建程序, 相对地也会有诸多限制,如果觉得不适用,可以自行调用 server.New。
cmd
web Module
Package locales 为 web 包提供了本地化的内容 并不主动加载这些信息,用户可以根据自身的需求引用 Locales。
Package locales 为 web 包提供了本地化的内容 并不主动加载这些信息,用户可以根据自身的需求引用 Locales。
Package serialization 序列化相关的操作
Package serialization 序列化相关的操作
form
Package form 用于处理 www-form-urlencoded 编码 func read(ctx *web.Context) { vals := urls.Values{} ctx.Read(vals) } func write(ctx *web.Context) { vals := urls.Values{} vals.Add("name", "caixw") return web.Object(http.StatusOK, vals, nil) } form 用户可以通过定义 form 标签自定义输出的名称,比如: type Username struct { Name string `form:"name"` Age int } 转换成 form-data 可能是以下样式: name=jjj&age=18 该方式对数据类型有一定限制: 1.
Package form 用于处理 www-form-urlencoded 编码 func read(ctx *web.Context) { vals := urls.Values{} ctx.Read(vals) } func write(ctx *web.Context) { vals := urls.Values{} vals.Add("name", "caixw") return web.Object(http.StatusOK, vals, nil) } form 用户可以通过定义 form 标签自定义输出的名称,比如: type Username struct { Name string `form:"name"` Age int } 转换成 form-data 可能是以下样式: name=jjj&age=18 该方式对数据类型有一定限制: 1.
gob
Package gob 提供 GOB 格式的编解码
Package gob 提供 GOB 格式的编解码
html
Package html 提供输出 HTML 内容的解码函数 srv := NewServer() tpl := template.ParseFiles(...) srv.Mimetypes().Add("text/html", html.Marshal, nil) func handle(ctx *web.Context) Responser { return Object(200, html.Tpl(tpl, "index", map[string]interface{}{...}), nil) }
Package html 提供输出 HTML 内容的解码函数 srv := NewServer() tpl := template.ParseFiles(...) srv.Mimetypes().Add("text/html", html.Marshal, nil) func handle(ctx *web.Context) Responser { return Object(200, html.Tpl(tpl, "index", map[string]interface{}{...}), nil) }
jsonp
Package jsonp JSONP 序列化操作
Package jsonp JSONP 序列化操作
protobuf
Package protobuf 提供对 Google protocol buffers 的支持
Package protobuf 提供对 Google protocol buffers 的支持
text
Package text 针对文本内容的编解码实现
Package text 针对文本内容的编解码实现
text/testobject
Package testobject 用于测试 mimetype 的对象
Package testobject 用于测试 mimetype 的对象
Package server web 服务管理
Package server web 服务管理
servertest
Package servertest 针对 server 的测试用例
Package servertest 针对 server 的测试用例

Jump to

Keyboard shortcuts

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