kubernetes-sigs_nfs-subdir-.../vendor/github.com/emicklei/go-restful/v3
Humble Chirammal 061cd3b5fd update to version 1.26.0 dependencies
Signed-off-by: Humble Chirammal <hchiramm@redhat.com>
2023-04-06 14:27:01 +05:30
..
log update to version 1.26.0 dependencies 2023-04-06 14:27:01 +05:30
.gitignore update to version 1.26.0 dependencies 2023-04-06 14:27:01 +05:30
.goconvey update to version 1.26.0 dependencies 2023-04-06 14:27:01 +05:30
.travis.yml update to version 1.26.0 dependencies 2023-04-06 14:27:01 +05:30
CHANGES.md update to version 1.26.0 dependencies 2023-04-06 14:27:01 +05:30
LICENSE update to version 1.26.0 dependencies 2023-04-06 14:27:01 +05:30
Makefile update to version 1.26.0 dependencies 2023-04-06 14:27:01 +05:30
README.md update to version 1.26.0 dependencies 2023-04-06 14:27:01 +05:30
SECURITY.md update to version 1.26.0 dependencies 2023-04-06 14:27:01 +05:30
Srcfile update to version 1.26.0 dependencies 2023-04-06 14:27:01 +05:30
bench_test.sh update to version 1.26.0 dependencies 2023-04-06 14:27:01 +05:30
compress.go update to version 1.26.0 dependencies 2023-04-06 14:27:01 +05:30
compressor_cache.go update to version 1.26.0 dependencies 2023-04-06 14:27:01 +05:30
compressor_pools.go update to version 1.26.0 dependencies 2023-04-06 14:27:01 +05:30
compressors.go update to version 1.26.0 dependencies 2023-04-06 14:27:01 +05:30
constants.go update to version 1.26.0 dependencies 2023-04-06 14:27:01 +05:30
container.go update to version 1.26.0 dependencies 2023-04-06 14:27:01 +05:30
cors_filter.go update to version 1.26.0 dependencies 2023-04-06 14:27:01 +05:30
coverage.sh update to version 1.26.0 dependencies 2023-04-06 14:27:01 +05:30
curly.go update to version 1.26.0 dependencies 2023-04-06 14:27:01 +05:30
curly_route.go update to version 1.26.0 dependencies 2023-04-06 14:27:01 +05:30
custom_verb.go update to version 1.26.0 dependencies 2023-04-06 14:27:01 +05:30
doc.go update to version 1.26.0 dependencies 2023-04-06 14:27:01 +05:30
entity_accessors.go update to version 1.26.0 dependencies 2023-04-06 14:27:01 +05:30
extensions.go update to version 1.26.0 dependencies 2023-04-06 14:27:01 +05:30
filter.go update to version 1.26.0 dependencies 2023-04-06 14:27:01 +05:30
filter_adapter.go update to version 1.26.0 dependencies 2023-04-06 14:27:01 +05:30
go.mod update to version 1.26.0 dependencies 2023-04-06 14:27:01 +05:30
json.go update to version 1.26.0 dependencies 2023-04-06 14:27:01 +05:30
jsoniter.go update to version 1.26.0 dependencies 2023-04-06 14:27:01 +05:30
jsr311.go update to version 1.26.0 dependencies 2023-04-06 14:27:01 +05:30
logger.go update to version 1.26.0 dependencies 2023-04-06 14:27:01 +05:30
mime.go update to version 1.26.0 dependencies 2023-04-06 14:27:01 +05:30
options_filter.go update to version 1.26.0 dependencies 2023-04-06 14:27:01 +05:30
parameter.go update to version 1.26.0 dependencies 2023-04-06 14:27:01 +05:30
path_expression.go update to version 1.26.0 dependencies 2023-04-06 14:27:01 +05:30
path_processor.go update to version 1.26.0 dependencies 2023-04-06 14:27:01 +05:30
request.go update to version 1.26.0 dependencies 2023-04-06 14:27:01 +05:30
response.go update to version 1.26.0 dependencies 2023-04-06 14:27:01 +05:30
route.go update to version 1.26.0 dependencies 2023-04-06 14:27:01 +05:30
route_builder.go update to version 1.26.0 dependencies 2023-04-06 14:27:01 +05:30
route_reader.go update to version 1.26.0 dependencies 2023-04-06 14:27:01 +05:30
router.go update to version 1.26.0 dependencies 2023-04-06 14:27:01 +05:30
service_error.go update to version 1.26.0 dependencies 2023-04-06 14:27:01 +05:30
web_service.go update to version 1.26.0 dependencies 2023-04-06 14:27:01 +05:30
web_service_container.go update to version 1.26.0 dependencies 2023-04-06 14:27:01 +05:30

README.md

go-restful

package for building REST-style Web Services using Google Go

Build Status Go Report Card GoDoc codecov

REST asks developers to use HTTP methods explicitly and in a way that's consistent with the protocol definition. This basic REST design principle establishes a one-to-one mapping between create, read, update, and delete (CRUD) operations and HTTP methods. According to this mapping:

  • GET = Retrieve a representation of a resource
  • POST = Create if you are sending content to the server to create a subordinate of the specified resource collection, using some server-side algorithm.
  • PUT = Create if you are sending the full content of the specified resource (URI).
  • PUT = Update if you are updating the full content of the specified resource.
  • DELETE = Delete if you are requesting the server to delete the resource
  • PATCH = Update partial content of a resource
  • OPTIONS = Get information about the communication options for the request URI

Usage

Without Go Modules

All versions up to v2.*.* (on the master) are not supporting Go modules.

import (
	restful "github.com/emicklei/go-restful"
)

Using Go Modules

As of version v3.0.0 (on the v3 branch), this package supports Go modules.

import (
	restful "github.com/emicklei/go-restful/v3"
)

Example

ws := new(restful.WebService)
ws.
	Path("/users").
	Consumes(restful.MIME_XML, restful.MIME_JSON).
	Produces(restful.MIME_JSON, restful.MIME_XML)

ws.Route(ws.GET("/{user-id}").To(u.findUser).
	Doc("get a user").
	Param(ws.PathParameter("user-id", "identifier of the user").DataType("string")).
	Writes(User{}))		
...
	
func (u UserResource) findUser(request *restful.Request, response *restful.Response) {
	id := request.PathParameter("user-id")
	...
}

Full API of a UserResource

Features

  • Routes for request → function mapping with path parameter (e.g. {id} but also prefix_{var} and {var}_suffix) support
  • Configurable router:
    • (default) Fast routing algorithm that allows static elements, google custom method, regular expressions and dynamic parameters in the URL path (e.g. /resource/name:customVerb, /meetings/{id} or /static/{subpath:*})
    • Routing algorithm after JSR311 that is implemented using (but does not accept) regular expressions
  • Request API for reading structs from JSON/XML and accessing parameters (path,query,header)
  • Response API for writing structs to JSON/XML and setting headers
  • Customizable encoding using EntityReaderWriter registration
  • Filters for intercepting the request → response flow on Service or Route level
  • Request-scoped variables using attributes
  • Containers for WebServices on different HTTP endpoints
  • Content encoding (gzip,deflate) of request and response payloads
  • Automatic responses on OPTIONS (using a filter)
  • Automatic CORS request handling (using a filter)
  • API declaration for Swagger UI (go-restful-openapi, see go-restful-swagger12)
  • Panic recovery to produce HTTP 500, customizable using RecoverHandler(...)
  • Route errors produce HTTP 404/405/406/415 errors, customizable using ServiceErrorHandler(...)
  • Configurable (trace) logging
  • Customizable gzip/deflate readers and writers using CompressorProvider registration
  • Inject your own http.Handler using the HttpMiddlewareHandlerToFilter function

How to customize

There are several hooks to customize the behavior of the go-restful package.

  • Router algorithm
  • Panic recovery
  • JSON decoder
  • Trace logging
  • Compression
  • Encoders for other serializers
  • Use jsoniter by building this package using a build tag, e.g. go build -tags=jsoniter .

Resources

Type git shortlog -s for a full list of contributors.

© 2012 - 2022, http://ernestmicklei.com. MIT License. Contributions are welcome.