Documentation
¶
Overview ¶
Package problem implements RFC7807 `application/problem+json` and `application/problem+xml` using the functional options paradigm.
Features ¶
- Compatible with `application/problem+json`. - Inspired by https://github.com/zalando/problem. - RFC link https://tools.ietf.org/html/rfc7807. - A Problem implements the Error interface and can be compared with errors.Is(). - Wrap an error to a Problem. - `application/problem+xml` is also supported using `xml.Unmarshal` and `xml.Marshal`. - Auto-Title based on StatusCode with `problem.Of(statusCode)`.
Installation ¶
To install the package, run:
go get -u schneider.vip/problem
Index ¶
- Constants
- type Option
- func Custom(key string, value interface{}) Option
- func Detail(detail string) Option
- func Detailf(format string, values ...interface{}) Option
- func Instance(uri string) Option
- func Instancef(format string, values ...interface{}) Option
- func Status(status int) Option
- func Title(title string) Option
- func Titlef(format string, values ...interface{}) Option
- func Type(uri string) Option
- func Wrap(err error) Option
- func WrapSilent(err error) Option
- type Problem
- func (p *Problem) Append(opts ...Option) *Problem
- func (p Problem) Error() string
- func (p Problem) Is(err error) bool
- func (p Problem) JSON() []byte
- func (p Problem) JSONString() string
- func (p Problem) MarshalJSON() ([]byte, error)
- func (p Problem) MarshalXML(e *xml.Encoder, start xml.StartElement) error
- func (p Problem) UnmarshalJSON(b []byte) error
- func (p *Problem) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error
- func (p Problem) Unwrap() error
- func (p Problem) WriteHeaderTo(w http.ResponseWriter)
- func (p Problem) WriteTo(w http.ResponseWriter) (int, error)
- func (p Problem) WriteXMLHeaderTo(w http.ResponseWriter)
- func (p Problem) WriteXMLTo(w http.ResponseWriter) (int, error)
- func (p Problem) XML() []byte
- func (p Problem) XMLString() string
Constants ¶
const ( // ContentTypeJSON https://tools.ietf.org/html/rfc7807#section-6.1 ContentTypeJSON = "application/problem+json" // ContentTypeXML https://tools.ietf.org/html/rfc7807#section-6.2 ContentTypeXML = "application/problem+xml" )
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Option ¶
type Option interface {
// contains filtered or unexported methods
}
An Option configures a Problem using the functional options paradigm popularized by Rob Pike.
func Detailf ¶ added in v1.8.0
Detailf A human readable explanation using a format string specific to this occurrence of the problem.
func Instancef ¶ added in v1.8.1
Instance an absolute URI using a format string that identifies the specific occurrence of the problem.
func Status ¶
Status sets the HTTP status code generated by the origin server for this occurrence of the problem.
func Title ¶
Title sets a title that appropriately describes it (think short) Written in english and readable for engineers (usually not suited for non technical stakeholders and not localized); example: Service Unavailable
func Titlef ¶ added in v1.8.0
Titlef sets a title using a format string that appropriately describes it (think short) Written in english and readable for engineers (usually not suited for non technical stakeholders and not localized); example: Service Unavailable
func Type ¶
Type sets the type URI (typically, with the "http" or "https" scheme) that identifies the problem type. When dereferenced, it SHOULD provide human-readable documentation for the problem type
func WrapSilent ¶ added in v1.9.0
WrapSilent wraps an error inside of the Problem without placing the wrapped error into the problem's JSON body. Useful for cases where the underlying error needs to be preserved but not transmitted to the user.
type Problem ¶
type Problem struct {
// contains filtered or unexported fields
}
Problem is an RFC7807 error and can be compared with errors.Is()
func (Problem) Error ¶ added in v1.3.1
Error implements the error interface, so a Problem can be used as an error
func (Problem) JSONString ¶
JSONString returns the Problem as json string
func (Problem) MarshalJSON ¶ added in v1.3.1
MarshalJSON implements the json.Marshaler interface
func (Problem) MarshalXML ¶ added in v1.5.0
MarshalXML implements the xml.Marshaler interface
func (Problem) UnmarshalJSON ¶ added in v1.3.1
UnmarshalJSON implements the json.Unmarshaler interface
func (*Problem) UnmarshalXML ¶ added in v1.5.0
UnmarshalXML implements the xml.Unmarshaler interface
func (Problem) Unwrap ¶ added in v1.3.1
Unwrap returns the result of calling the Unwrap method on err, if err implements Unwrap. Otherwise, Unwrap returns nil.
func (Problem) WriteHeaderTo ¶ added in v1.7.0
func (p Problem) WriteHeaderTo(w http.ResponseWriter)
WriteHeaderTo writes the HTTP headers for the JSON Problem ContentType and the problem's HTTP statuscode. This is suitable for responding to HEAD requests.
func (Problem) WriteTo ¶ added in v1.1.0
func (p Problem) WriteTo(w http.ResponseWriter) (int, error)
WriteTo writes the JSON Problem to an HTTP Response Writer using the correct Content-Type and the problem's HTTP statuscode
func (Problem) WriteXMLHeaderTo ¶ added in v1.7.0
func (p Problem) WriteXMLHeaderTo(w http.ResponseWriter)
WriteXMLHeaderTo writes the HTTP headers for the XML Problem ContentType and the problem's HTTP statuscode. This is suitable for responding to HEAD requests.
func (Problem) WriteXMLTo ¶ added in v1.5.0
func (p Problem) WriteXMLTo(w http.ResponseWriter) (int, error)
WriteXMLTo writes the XML Problem to an HTTP Response Writer using the correct Content-Type and the problem's HTTP statuscode