Documentation ¶
Overview ¶
Package 0proto/rpc/json provides a codec for JSON-RPC over HTTP services.
To register the codec in a RPC server:
import ( "http" "github.com/0proto/rpc" "github.com/0proto/rpc/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 0proto/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 ¶
func (c *Codec) NewRequest(r *http.Request) rpc.CodecRequest
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) WriteResponse ¶
func (c *CodecRequest) WriteResponse(w http.ResponseWriter, reply interface{}, methodErr error) error
WriteResponse encodes the response and writes it to the ResponseWriter.
The err parameter is the error resulted from calling the RPC method, or nil if there was no error.