Documentation ¶
Overview ¶
package processor defines what a ResponseProcessor is, and provides four standard implementations: JSON, XML, CSV and plain text.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func RenderJSON ¶ added in v0.9.0
func RenderJSON(indent string) func(http.ResponseWriter, string, interface{}) error
RenderJSON returns a rendering function that converts some data into JSON.
Types ¶
type ContentTypeSettable ¶
type ContentTypeSettable interface {
WithContentType(contentType string) ResponseProcessor
}
ContentTypeSettable interface provides for those response processors that allow the response Content-Type to be set explicitly.
type ResponseProcessor ¶
type ResponseProcessor interface { // CanProcess is the predicate that determines whether this processor // will handle a given request. CanProcess(mediaRange string, lang string) bool // ContentType returns the content type for this response. ContentType() string // Process renders the data model to the response writer, without setting any headers. // If the processor encounters an error, it should panic. Process(w http.ResponseWriter, template string, dataModel interface{}) error }
ResponseProcessor interface creates the contract for custom content negotiation.
func CSV ¶
func CSV(comma ...rune) ResponseProcessor
CSV creates an output processor that serialises a dataModel in CSV form. With no arguments, the default format is comma-separated; you can supply any rune to be used as an alternative separator.
Model values should be one of the following:
* string or []string, or [][]string
* fmt.Stringer or []fmt.Stringer, or [][]fmt.Stringer
* []int or similar (bool, int8, int16, int32, int64, uint8, uint16, uint32, uint63, float32, float64, complex)
* [][]int or similar (bool, int8, int16, int32, int64, uint8, uint16, uint32, uint63, float32, float64, complex)
* struct for some struct in which all the fields are exported and of simple types (as above).
* []struct for some struct in which all the fields are exported and of simple types (as above).
func IndentedXML ¶
func IndentedXML(index string) ResponseProcessor
IndentedXML creates a new processor for XML with a specified indentation.
func JSON ¶
func JSON(indent ...string) ResponseProcessor
JSON creates a new processor for JSON with a specified indentation. It handles all requests except Ajax requests.
func TXT ¶
func TXT() ResponseProcessor
TXT creates an output processor that serialises strings in text/plain form. Model values should be one of the following:
* string
* fmt.Stringer
* encoding.TextMarshaler