cri-o/vendor/github.com/emicklei/go-restful
Jacek J. Łakis bf51655a7b vendor: Update vendoring for the exec client and server implementations
Signed-off-by: Jacek J. Łakis <jacek.lakis@intel.com>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
2017-04-24 18:38:41 +02:00
..
examples vendor: Update vendoring for the exec client and server implementations 2017-04-24 18:38:41 +02:00
log vendor: Update vendoring for the exec client and server implementations 2017-04-24 18:38:41 +02:00
swagger vendor: Update vendoring for the exec client and server implementations 2017-04-24 18:38:41 +02:00
.gitignore vendor: Update vendoring for the exec client and server implementations 2017-04-24 18:38:41 +02:00
bench_curly_test.go vendor: Update vendoring for the exec client and server implementations 2017-04-24 18:38:41 +02:00
bench_test.go vendor: Update vendoring for the exec client and server implementations 2017-04-24 18:38:41 +02:00
bench_test.sh vendor: Update vendoring for the exec client and server implementations 2017-04-24 18:38:41 +02:00
CHANGES.md vendor: Update vendoring for the exec client and server implementations 2017-04-24 18:38:41 +02:00
compress.go vendor: Update vendoring for the exec client and server implementations 2017-04-24 18:38:41 +02:00
compress_test.go vendor: Update vendoring for the exec client and server implementations 2017-04-24 18:38:41 +02:00
compressor_cache.go vendor: Update vendoring for the exec client and server implementations 2017-04-24 18:38:41 +02:00
compressor_pools.go vendor: Update vendoring for the exec client and server implementations 2017-04-24 18:38:41 +02:00
compressors.go vendor: Update vendoring for the exec client and server implementations 2017-04-24 18:38:41 +02:00
constants.go vendor: Update vendoring for the exec client and server implementations 2017-04-24 18:38:41 +02:00
container.go vendor: Update vendoring for the exec client and server implementations 2017-04-24 18:38:41 +02:00
container_test.go vendor: Update vendoring for the exec client and server implementations 2017-04-24 18:38:41 +02:00
cors_filter.go vendor: Update vendoring for the exec client and server implementations 2017-04-24 18:38:41 +02:00
cors_filter_test.go vendor: Update vendoring for the exec client and server implementations 2017-04-24 18:38:41 +02:00
coverage.sh vendor: Update vendoring for the exec client and server implementations 2017-04-24 18:38:41 +02:00
curly.go vendor: Update vendoring for the exec client and server implementations 2017-04-24 18:38:41 +02:00
curly_route.go vendor: Update vendoring for the exec client and server implementations 2017-04-24 18:38:41 +02:00
curly_test.go vendor: Update vendoring for the exec client and server implementations 2017-04-24 18:38:41 +02:00
doc.go vendor: Update vendoring for the exec client and server implementations 2017-04-24 18:38:41 +02:00
doc_examples_test.go vendor: Update vendoring for the exec client and server implementations 2017-04-24 18:38:41 +02:00
entity_accessors.go vendor: Update vendoring for the exec client and server implementations 2017-04-24 18:38:41 +02:00
entity_accessors_test.go vendor: Update vendoring for the exec client and server implementations 2017-04-24 18:38:41 +02:00
filter.go vendor: Update vendoring for the exec client and server implementations 2017-04-24 18:38:41 +02:00
filter_test.go vendor: Update vendoring for the exec client and server implementations 2017-04-24 18:38:41 +02:00
install.sh vendor: Update vendoring for the exec client and server implementations 2017-04-24 18:38:41 +02:00
jsr311.go vendor: Update vendoring for the exec client and server implementations 2017-04-24 18:38:41 +02:00
jsr311_test.go vendor: Update vendoring for the exec client and server implementations 2017-04-24 18:38:41 +02:00
LICENSE vendor: Update vendoring for the exec client and server implementations 2017-04-24 18:38:41 +02:00
logger.go vendor: Update vendoring for the exec client and server implementations 2017-04-24 18:38:41 +02:00
mime.go vendor: Update vendoring for the exec client and server implementations 2017-04-24 18:38:41 +02:00
mime_test.go vendor: Update vendoring for the exec client and server implementations 2017-04-24 18:38:41 +02:00
options_filter.go vendor: Update vendoring for the exec client and server implementations 2017-04-24 18:38:41 +02:00
options_filter_test.go vendor: Update vendoring for the exec client and server implementations 2017-04-24 18:38:41 +02:00
parameter.go vendor: Update vendoring for the exec client and server implementations 2017-04-24 18:38:41 +02:00
path_expression.go vendor: Update vendoring for the exec client and server implementations 2017-04-24 18:38:41 +02:00
path_expression_test.go vendor: Update vendoring for the exec client and server implementations 2017-04-24 18:38:41 +02:00
README.md vendor: Update vendoring for the exec client and server implementations 2017-04-24 18:38:41 +02:00
request.go vendor: Update vendoring for the exec client and server implementations 2017-04-24 18:38:41 +02:00
request_test.go vendor: Update vendoring for the exec client and server implementations 2017-04-24 18:38:41 +02:00
response.go vendor: Update vendoring for the exec client and server implementations 2017-04-24 18:38:41 +02:00
response_test.go vendor: Update vendoring for the exec client and server implementations 2017-04-24 18:38:41 +02:00
route.go vendor: Update vendoring for the exec client and server implementations 2017-04-24 18:38:41 +02:00
route_builder.go vendor: Update vendoring for the exec client and server implementations 2017-04-24 18:38:41 +02:00
route_builder_test.go vendor: Update vendoring for the exec client and server implementations 2017-04-24 18:38:41 +02:00
route_test.go vendor: Update vendoring for the exec client and server implementations 2017-04-24 18:38:41 +02:00
router.go vendor: Update vendoring for the exec client and server implementations 2017-04-24 18:38:41 +02:00
service_error.go vendor: Update vendoring for the exec client and server implementations 2017-04-24 18:38:41 +02:00
Srcfile vendor: Update vendoring for the exec client and server implementations 2017-04-24 18:38:41 +02:00
tracer_test.go vendor: Update vendoring for the exec client and server implementations 2017-04-24 18:38:41 +02:00
web_service.go vendor: Update vendoring for the exec client and server implementations 2017-04-24 18:38:41 +02:00
web_service_container.go vendor: Update vendoring for the exec client and server implementations 2017-04-24 18:38:41 +02:00
web_service_test.go vendor: Update vendoring for the exec client and server implementations 2017-04-24 18:38:41 +02:00

go-restful

package for building REST-style Web Services using Google Go

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

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}) support
  • Configurable router:
    • Routing algorithm after JSR311 that is implemented using (but does not accept) regular expressions (See RouterJSR311 which is used by default)
    • Fast routing algorithm that allows static elements, regular expressions and dynamic parameters in the URL path (e.g. /meetings/{id} or /static/{subpath:*}, See CurlyRouter)
  • Request API for reading structs from JSON/XML and accesing parameters (path,query,header)
  • Response API for writing structs to JSON/XML and setting headers
  • 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 (see swagger package)
  • 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 encoding using EntityReaderWriter registration
  • Customizable gzip/deflate readers and writers using CompressorProvider registration

Resources

Build Status

(c) 2012 - 2015, http://ernestmicklei.com. MIT License

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