webapi

package module
v0.1.0 Latest Latest
Warning

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

Go to latest
Published: Dec 6, 2022 License: MIT Imports: 12 Imported by: 3

README

webapi 概述

包:"github.com/farseer-go/webapi"

模块:webapi.Module

文档:https://farseer-go.github.io/doc/

?> 用于快速构建api服务,带来极简、优雅的开发体验。编写api服务时,不需要使用httpRequest、httpResponse等数据结构。

webapi使用了中间件的管道模型编写,让我们加入非业务逻辑时非常简单。

包含两种风格来提供API服务:

  • minimalApi:动态API风格(直接绑定到逻辑层)
  • Mvc:Controller、Action风格

?> 使用minimalApi时,甚至不需要UI层来提供API服务。

大部份情况下,除了main需要配置webapi路由外,在你的api handle中就是一个普通的func函数,不需要依赖webapi组件。webapi会根据func函数出入参隐式绑定数据

func main() {
	fs.Initialize[webapi.Module]("FOPS")
	webapi.RegisterPOST("/mini/hello1", Hello1)
	webapi.RegisterPOST("/mini/hello3", testMiniapi.Hello3, "pageSize", "pageIndex")
	webapi.Run()
}

func Hello1(req request.PageSizeRequest) string {
	return fmt.Sprintf("hello world pageSize=%d,pageIndex=%d", req.PageSize, req.PageIndex)
}

func Hello3(pageSize int, pageIndex int) request.PageSizeRequest {
    return request.PageSizeRequest{
        PageSize:  pageSize,
        PageIndex: pageIndex,
    }
}

在Hello1、Hello3两个函数中,出入参都会自动绑定数据

?> 如果是application/json,则会自动被反序列化成model,如果是x-www-form-urlencoded,则会将每一项的key/value匹配到model字段中

可以看到,整个过程,不需要json序列化httpRequesthttpResponse的操作。

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Area

func Area(area string, f func())

Area 设置区域

func RegisterAction

func RegisterAction(method string, route string, actionFunc any, params ...string)

RegisterAction 注册单个Api

func RegisterController

func RegisterController(c controller.IController)

RegisterController 自动注册控制器下的所有Action方法

func RegisterDELETE

func RegisterDELETE(route string, actionFunc any, params ...string)

RegisterDELETE 注册单个Api

func RegisterGET

func RegisterGET(route string, actionFunc any, params ...string)

RegisterGET 注册单个Api

func RegisterMiddleware

func RegisterMiddleware(m middleware.IMiddleware)

func RegisterPOST

func RegisterPOST(route string, actionFunc any, params ...string)

RegisterPOST 注册单个Api

func RegisterPUT

func RegisterPUT(route string, actionFunc any, params ...string)

RegisterPUT 注册单个Api

func Run

func Run(params ...string)

func UseApiResponse

func UseApiResponse()

UseApiResponse 支持ApiResponse结构

func UseCors

func UseCors()

UseCors 使用CORS中间件

func UseStaticFiles

func UseStaticFiles()

UseStaticFiles 支持静态目录,在根目录./wwwroot中的文件,直接以静态文件提供服务

func UseWebApi

func UseWebApi()

Types

type Module

type Module struct {
}

func (Module) DependsModule

func (module Module) DependsModule() []modules.FarseerModule

func (Module) Initialize

func (module Module) Initialize()

func (Module) PostInitialize

func (module Module) PostInitialize()

func (Module) PreInitialize

func (module Module) PreInitialize()

func (Module) Shutdown

func (module Module) Shutdown()

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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