restful

package
v2.7.1 Latest Latest
Warning

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

Go to latest
Published: Nov 10, 2022 License: Apache-2.0 Imports: 29 Imported by: 19

Documentation

Index

Constants

View Source
const (
	//Name is a variable of type string which indicates the protocol being used
	Name = "rest"

	ProfileRouteRuleSubPath = "route-rule"
	ProfileDiscoverySubPath = "discovery"
	MimeFile                = "application/octet-stream"
	MimeMult                = "multipart/form-data"
)

constants for metric path and name

View Source
const (
	Path  = "path"
	Query = "query"
)

const for doc

View Source
const HeaderAuth = "Authorization"

HeaderAuth is const

Variables

This section is empty.

Functions

func BuildRouteHandler

func BuildRouteHandler(route *Route, schema interface{}) (func(ctx *Context), error)

BuildRouteHandler build handler func from ResourceFunc or ResourceFuncName

func GetRouteGroup

func GetRouteGroup(schema interface{}) string

GetRouteGroup is to return a router group path

func GetTrace

func GetTrace() string

GetTrace get trace

func GroupRoutePath

func GroupRoutePath(route *Route, schema interface{})

GroupRoutePath add group route path to route

func HTTPRequest2Invocation

func HTTPRequest2Invocation(req *restful.Request, schema, operation string, resp *restful.Response) (*invocation.Invocation, error)

HTTPRequest2Invocation convert http request to uniform invocation data format

func Invocation2HTTPRequest

func Invocation2HTTPRequest(inv *invocation.Invocation, req *restful.Request)

Invocation2HTTPRequest convert invocation back to http request, set down all meta data

func Register2GoRestful

func Register2GoRestful(routeSpec Route, ws *restful.WebService, handler restful.RouteFunction) error

Register2GoRestful register http handler to go-restful framework

func WrapHandlerChain

func WrapHandlerChain(route *Route, schema interface{}, schemaName string, opts server.Options) (restful.RouteFunction, error)

WrapHandlerChain wrap business handler with handler chain

Types

type Context

type Context struct {
	Ctx  context.Context
	Req  *restful.Request
	Resp *restful.Response
}

Context is a struct which has both request and response objects and request context

func NewBaseServer

func NewBaseServer(ctx context.Context) *Context

NewBaseServer is a function which return context

func (*Context) AddHeader

func (bs *Context) AddHeader(header string, value string)

AddHeader is a function used to add header to a response

func (*Context) ReadBodyParameter

func (bs *Context) ReadBodyParameter(name string) (string, error)

ReadBodyParameter used to read body parameter of a request

func (*Context) ReadEntity

func (bs *Context) ReadEntity(schema interface{}) (err error)

ReadEntity is request reader

func (*Context) ReadHeader

func (bs *Context) ReadHeader(name string) string

ReadHeader is used to read header of request

func (*Context) ReadPathParameter

func (bs *Context) ReadPathParameter(name string) string

ReadPathParameter is used to read path parameter of a request

func (*Context) ReadPathParameters

func (bs *Context) ReadPathParameters() map[string]string

ReadPathParameters used to read multiple path parameters of a request

func (*Context) ReadQueryEntity

func (bs *Context) ReadQueryEntity(schema interface{}) (err error)

ReadQueryEntity is used to read query parameters into a specified struct. The struct tag should be `form` like:

type QueryRequest struct {
    Name string `form:"name"`
    Password string `form:"password"`
}

func (*Context) ReadQueryParameter

func (bs *Context) ReadQueryParameter(name string) string

ReadQueryParameter is used to read query parameter of a request

func (*Context) ReadRequest

func (bs *Context) ReadRequest() *http.Request

ReadRequest return a native net/http request

func (*Context) ReadResponseWriter

func (bs *Context) ReadResponseWriter() http.ResponseWriter

ReadResponseWriter return a native net/http ResponseWriter

func (*Context) ReadRestfulRequest

func (bs *Context) ReadRestfulRequest() *restful.Request

ReadRestfulRequest return a native go-restful request

func (*Context) ReadRestfulResponse

func (bs *Context) ReadRestfulResponse() *restful.Response

ReadRestfulResponse return a native go-restful Response

func (*Context) Write

func (bs *Context) Write(body []byte) error

write is the response writer.

func (*Context) WriteError

func (bs *Context) WriteError(httpStatus int, err error) error

WriteError is a function used to write error into a response

func (*Context) WriteHeader

func (bs *Context) WriteHeader(httpStatus int)

WriteHeader is the response head writer

func (*Context) WriteHeaderAndJSON

func (bs *Context) WriteHeaderAndJSON(status int, value interface{}, contentType string) error

WriteHeaderAndJSON used to write head and JSON file in to response

func (*Context) WriteJSON

func (bs *Context) WriteJSON(value interface{}, contentType string) error

WriteJSON used to write a JSON file into response

type Parameters

type Parameters struct {
	Name      string //parameter name
	DataType  string // string, int etc
	ParamType int    //restful.QueryParameterKind or restful.PathParameterKind
	Desc      string
	Required  bool
}

Parameters describe parameters in url path or query params

type ResourceHandler

type ResourceHandler struct {
	// contains filtered or unexported fields
}

ResourceHandler wraps go-chassis restful function

func (*ResourceHandler) Handle

Handle is to handle the router related things

func (*ResourceHandler) Name

func (h *ResourceHandler) Name() string

Name returns the name string

type Returns

type Returns struct {
	Code    int // http response code
	Message string
	Model   interface{} // response body structure
	Headers map[string]restful.Header
}

Returns describe response doc

type Route

type Route struct {
	Method           string                 //Method is one of the following: GET,PUT,POST,DELETE. required
	Path             string                 //Path contains a path pattern. required
	ResourceFunc     func(ctx *Context)     //the func this API calls. you must set this field or ResourceFunc, if you set both, ResourceFunc will be used
	ResourceFuncName string                 //the func this API calls. you must set this field or ResourceFunc
	FuncDesc         string                 //tells what this route is all about. Optional.
	Parameters       []*Parameters          //Parameters is a slice of request parameters for a single endpoint Optional.
	Returns          []*Returns             //what kind of response this API returns. Optional.
	Read             interface{}            //Read tells what resource type will be read from the request payload. Optional.
	Consumes         []string               //Consumes specifies that this WebService can consume one or more MIME types.
	Produces         []string               //Produces specifies that this WebService can produce one or more MIME types.
	Metadata         map[string]interface{} //Metadata adds or updates a key=value pair to api
}

Route describe http route path and swagger specifications for API

func GetRouteSpecs

func GetRouteSpecs(schema interface{}) ([]Route, error)

GetRouteSpecs is to return a rest API specification of a go struct

type RouteGroup

type RouteGroup interface {
	//GroupPath if return non-zero-value, it would be appended to route as prefix
	GroupPath() string
}

RouteGroup is to define the route group name

type Router

type Router interface {
	//URLPatterns returns route
	URLPatterns() []Route
}

Router is to define how route the request

Directories

Path Synopsis
Package api supply a bunch of common http handler that could be mounted on you rest server and expose ability for example: prometheus metrics will be exported on /metrics api
Package api supply a bunch of common http handler that could be mounted on you rest server and expose ability for example: prometheus metrics will be exported on /metrics api

Jump to

Keyboard shortcuts

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