go-apiserver

module
v0.50.0 Latest Latest
Warning

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

Go to latest
Published: May 13, 2024 License: Apache-2.0

README

go-apiserver Build Status GoDoc License

The library is used to build an API server, requiring Go1.21+.

Install

$ go get -u github.com/xgfone/go-apiserver

Example

Simple HTTP Router
package main

import (
	"fmt"
	"net/http"

	"github.com/xgfone/go-apiserver/http/middleware"
	"github.com/xgfone/go-apiserver/http/middleware/context"
	"github.com/xgfone/go-apiserver/http/middleware/logger"
	"github.com/xgfone/go-apiserver/http/middleware/recover"
	"github.com/xgfone/go-apiserver/http/reqresp"
	"github.com/xgfone/go-apiserver/http/router"
	"github.com/xgfone/go-apiserver/http/router/ruler"
	"github.com/xgfone/go-apiserver/http/server"
)

func httpHandler(route string) http.HandlerFunc {
	return func(w http.ResponseWriter, r *http.Request) {
		c := reqresp.GetContext(r.Context())
		fmt.Fprintf(w, "%s: %s", route, c.Data["id"])
	}
}

func main() {
	// Build the routes.
	routeManager := ruler.NewRouter()
	routeManager.Path("/path1/{id}").Method("GET").Handler(httpHandler("route1"))
	routeManager.Path("/path2/{id}").GET(httpHandler("route2"))

	router := router.NewRouter(routeManager)
	router.Use(middleware.MiddlewareFunc(context.Context)) // Use a function as middleware
	router.Use(
		middleware.New("logger", 1, logger.Logger),    // Use the named priority middleware
		middleware.New("recover", 2, recover.Recover), // Use the named priority middleware
	)

	// http.ListenAndServe("127.0.0.1:80", router)
	server.Start("127.0.0.1:80", router)

	// Open a terminal and run the program:
	// $ go run main.go
	//
	// Open another terminal and run the http client:
	// $ curl http://127.0.0.1/path1/123
	// route1: 123
	// $ curl http://127.0.0.1/path2/123
	// route2: 123
}

Directories

Path Synopsis
Package helper provides some helpful functions.
Package helper provides some helpful functions.
http
forwarder
Package forwarder provides a http request forwarder to forward a request to another host.
Package forwarder provides a http request forwarder to forward a request to another host.
handler
Package handler provides some http handler functions.
Package handler provides some http handler functions.
header
Package header provides some header constants and operations.
Package header provides some header constants and operations.
middleware
Package middleware defines a http handler middleware.
Package middleware defines a http handler middleware.
middleware/context
Package context provides a context middleware to set the Context into the request.
Package context provides a context middleware to set the Context into the request.
middleware/cors
Package cors provides a CORS middleware.
Package cors provides a CORS middleware.
middleware/logger
Package logger provides a logger middleware to log the http request.
Package logger provides a logger middleware to log the http request.
middleware/path
Package path provides a middleware to respond to the given path.
Package path provides a middleware to respond to the given path.
middleware/recover
Package recover provides a recover middleware to wrap and log the panic.
Package recover provides a recover middleware to wrap and log the panic.
middleware/requestid
Package requestid provides a request id middleware based on the request header "X-Request-Id".
Package requestid provides a request id middleware based on the request header "X-Request-Id".
reqresp
Package reqresp provides some http request and response functions.
Package reqresp provides some http request and response functions.
router
Package router implements a router of the http handler.
Package router implements a router of the http handler.
router/action
Package action implements a router based on the action service.
Package action implements a router based on the action service.
router/ruler
Package ruler implements a route manager based on the ruler.
Package ruler implements a route manager based on the ruler.
server
Package server provides a simple common http server starter.
Package server provides a simple common http server starter.
statuscode
Package statuscode provides an error based on the status code.
Package statuscode provides an error based on the status code.
Package logger provides some log assistants.
Package logger provides some log assistants.
Package nets provides some convenient net functions.
Package nets provides some convenient net functions.
Package result provides a common result response.
Package result provides a common result response.
code
Package code provides an error based on the code and message.
Package code provides an error based on the code and message.
codeint
Package codeint provides an error based on the integer code.
Package codeint provides an error based on the integer code.

Jump to

Keyboard shortcuts

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