package protorpc
import "github.com/gorilla/rpc/v2/protorpc"
Installation | Overview | API | Files
Installation
$ go get github.com/gorilla/rpc/v2/protorpc
Overview
Package gorilla/rpc/protorpc provides a codec for ProtoRPC over HTTP services.
To register the codec in a RPC server:
import ( "http" "github.com/gorilla/rpc/v2" "github.com/gorilla/rpc/v2/protorpc" ) func init() { s := rpc.NewServer() s.RegisterCodec(protorpc.NewCodec(), "application/json") // [...] http.Handle("/rpc", s) }
A codec is tied to a content type. In the example above, the server will use the ProtoRPC codec for requests with "application/json" as the value for the "Content-Type" header.
This package implement ProtoRPC, based on the JSON-RPC transport, it differs in that it uses HTTP as its envelope.
Example: POST /Service.Method Request: {
"requestField1": "value1", "requestField2": "value2",
} Response: {
"responseField1": "value1", "responseField2": "value2",
}
Check the gorilla/rpc documentation for more details:
http://gorilla-web.appspot.com/pkg/rpc
API
Package Files
type Codec
type Codec struct {
}
Codec creates a CodecRequest to process each request.
func NewCodec
func NewCodec() *Codec
NewCodec returns a new ProtoRPC Codec.
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) WriteError
func (c *CodecRequest) WriteError(w http.ResponseWriter, status 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.