Skip to content

library to build REST based Web Services using Google Go

License

Notifications You must be signed in to change notification settings

just4id/go-restful

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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
  • POST = Create if you are sending a command to the server to create a subordinate of the specified resource, using some server-side algorithm.
  • POST = Update if you are requesting the server to update one or more subordinates of the specified resource.
  • PUT = Create iff you are sending the full content of the specified resource (URI).
  • PUT = Update iff 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
  • Routing algorithm after JSR311; Router can be configured
  • 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
  • Containers for WebServices on different HTTP endpoints
  • Content encoding (gzip,deflate) of responses
  • Automatic responses on OPTIONS (using a filter)
  • Automatic CORS request handling (using a filter)
  • API declaration for Swagger UI
  • Panic recovery to produce HTTP 500

Resources

Build Status

(c) 2013, http://ernestmicklei.com. MIT License

About

library to build REST based Web Services using Google Go

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published