package protorpc

import "github.com/gorilla/rpc/protorpc"

Installation | Overview | API | Files

Installation

$ go get github.com/gorilla/rpc/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"
    "github.com/gorilla/rpc/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) 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.