import "github.com/tjdavis3/problems"
The problems package represents RFC7807 problem details.
Example
Basic example
{
prob := New(500, "An Error has occurred")
prob.Set("Title", "Test Error")
prob.Set("Instance", "/error/test")
prob.PrettyPrint()
}
{
"detail": "An Error has occurred",
"instance": "/error/test",
"status": 500,
"title": "Test Error",
"type": "about:blank"
}
Example (Array)
Example with extended attributes, including an array of problem fields. The type must be set to something other than about:blank to add extended attributes
{
prob := New(500, "An Error has occurred")
prob.Set("Title", "Test Error")
prob.Set("Instance", "/error/test")
prob.Set("Type", "uri:example:extended")
prob.Set("TraceID", "12345-67890")
issues := make(map[string]interface{})
issues["field"] = "state"
issues["message"] = "A valid state must be provided"
prob.Set("invalid-params", []map[string]interface{}{issues})
prob.PrettyPrint()
}
{
"detail": "An Error has occurred",
"instance": "/error/test",
"invalid-params": [
{
"field": "state",
"message": "A valid state must be provided"
}
],
"status": 500,
"title": "Test Error",
"traceid": "12345-67890",
"type": "uri:example:extended"
}
Example (Extended)
Example with extended attributes. The type must be set to something other than about:blank to add extended attributes
{
prob := New(500, "An Error has occurred")
prob.Set("Title", "Test Error")
prob.Set("Instance", "/error/test")
prob.Set("Type", "uri:example:extended")
prob.Set("TraceID", "12345-67890")
prob.PrettyPrint()
}
{
"detail": "An Error has occurred",
"instance": "/error/test",
"status": 500,
"title": "Test Error",
"traceid": "12345-67890",
"type": "uri:example:extended"
}
const (
// ProblemMediaType is the default media type for a Problem response
ProblemMediaType = "application/problem+json"
)
Problem is an RFC7807 representation of an error
type Problem struct {
// Type is a URI reference [RFC3986] that identifies the
// problem type. This specification encourages that, when
// dereferenced, it provide human-readable documentation for the
// problem type (e.g., using HTML [W3C.REC-html5-20141028]). When
// this member is not present, its value is assumed to be
// "about:blank".
Type string `json:"type,omitempty"`
// Title is a short, human-readable summary of the problem
// type. It SHOULD NOT change from occurrence to occurrence of the
// problem, except for purposes of localization (e.g., using
// proactive content negotiation; see [RFC7231], Section 3.4).
Title string
// Status is the HTTP status code ([RFC7231], Section 6)
// generated by the origin server for this occurrence of the problem.
Status int
// Detail is a human-readable explanation specific to this
// occurrence of the problem.
Detail string
// Instance is a URI reference that identifies the specific
// occurrence of the problem. It may or may not yield further
// information if dereferenced.
Instance string `json:"instance,omitempty"`
// Attributes are extra fields/data that can be added to the problem.
// They should be set with the `Set` method. The `Type` MUST be set
// and cannot be `about:blank`
Attributes map[string]interface{} `json:"vars,omitempty" xml:"vars,omitempty"`
// contains filtered or unexported fields
}
Generated by gomarkdoc