json

package
v1.3.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 10, 2019 License: BSD-3-Clause Imports: 7 Imported by: 0

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

func DecodeClientResponse(r io.Reader, reply interface{}) error

DecodeClientResponse decodes the response body of a client request into the interface reply.

func EncodeClientRequest

func EncodeClientRequest(method string, args interface{}) ([]byte, error)

EncodeClientRequest encodes parameters for a JSON-RPC client request.

Types

type Codec

type Codec struct {
}

Codec creates a CodecRequest to process each request.

func NewCodec

func NewCodec() *Codec

NewCodec returns a new JSON 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.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL