Documentation ¶
Overview ¶
Package gorilla/rpc/json provides a codec for JSON-RPC over HTTP services.
To register the codec in a RPC server:
import ( "http" "github.com/gorilla/rpc/v2" "github.com/gorilla/rpc/v2/json" ) func init() { s := rpc.NewServer() s.RegisterCodec(json.NewCodec(), "application/json") // [...] http.Handle("/rpc", s) }
A codec is tied to a content type. In the example above, the server will use the JSON codec for requests with "application/json" as the value for the "Content-Type" header.
This package follows the JSON-RPC 1.0 specification:
http://json-rpc.org/wiki/specification
Request format is:
method: The name of the method to be invoked, as a string in dotted notation as in "Service.Method". params: An array with a single object to pass as argument to the method. id: The request id, a uint. It is used to match the response with the request that it is replying to.
Response format is:
result: The Object that was returned by the invoked method, or null in case there was an error invoking the method. error: An Error object if there was an error invoking the method, or null if there was no error. id: The same id as the request it is responding to.
Check the gorilla/rpc documentation for more details:
http://gorilla-web.appspot.com/pkg/rpc
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func DecodeClientResponse ¶
DecodeClientResponse decodes the response body of a client request into the interface reply.
func EncodeClientRequest ¶
EncodeClientRequest encodes parameters for a JSON-RPC client request.
Types ¶
type Codec ¶
type Codec struct { }
Codec creates a CodecRequest to process each request.
func (*Codec) NewRequest ¶
NewRequest returns a CodecRequest.
type CodecRequest ¶
type CodecRequest struct {
// contains filtered or unexported fields
}
CodecRequest decodes and encodes a single request.
func (*CodecRequest) Method ¶
func (c *CodecRequest) Method() (string, error)
Method returns the RPC method for the current request.
The method uses a dotted notation as in "Service.Method".
func (*CodecRequest) ReadRequest ¶
func (c *CodecRequest) ReadRequest(args interface{}) error
ReadRequest fills the request object for the RPC method.
func (*CodecRequest) WriteError ¶
func (c *CodecRequest) WriteError(w http.ResponseWriter, _ int, err error)
func (*CodecRequest) WriteResponse ¶
func (c *CodecRequest) WriteResponse(w http.ResponseWriter, reply interface{})
WriteResponse encodes the response and writes it to the ResponseWriter.