本文整理匯總了Golang中github.com/raphael/goa/design.APIVersionDefinition.Responses方法的典型用法代碼示例。如果您正苦於以下問題:Golang APIVersionDefinition.Responses方法的具體用法?Golang APIVersionDefinition.Responses怎麽用?Golang APIVersionDefinition.Responses使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類github.com/raphael/goa/design.APIVersionDefinition
的用法示例。
在下文中一共展示了APIVersionDefinition.Responses方法的1個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: ResponseTemplate
// ResponseTemplate defines a response template that action definitions can use to describe their
// responses. The template may specify the HTTP response status, header specification and body media
// type. The template consists of a name and an anonymous function. The function is called when an
// action uses the template to define a response. Response template functions accept string
// parameters they can use to define the response fields. Here is an example of a response template
// definition that uses a function with one argument corresponding to the name of the response body
// media type:
//
// ResponseTemplate(OK, func(mt string) {
// Status(200) // OK response uses status code 200
// Media(mt) // Media type name set by action definition
// Headers(func() {
// Header("X-Request-Id", func() { // X-Request-Id header contains a string
// Pattern("[0-9A-F]+") // Regexp used to validate the response header content
// })
// Required("X-Request-Id") // Header is mandatory
// })
// })
//
// This template can the be used by actions to define the OK response as follows:
//
// Response(OK, "vnd.goa.example")
//
// goa comes with a set of predefined response templates (one per standard HTTP status code). The
// OK template is the only one that accepts an argument. It is used as shown in the example above to
// set the response media type. Other predefined templates do not use arguments. ResponseTemplate
// makes it possible to define additional response templates specific to the API.
func ResponseTemplate(name string, p interface{}) {
var v *design.APIVersionDefinition
if a, ok := apiDefinition(false); ok {
v = a.APIVersionDefinition
} else if ver, ok := versionDefinition(true); ok {
v = ver
}
if v == nil {
return
}
if v.Responses == nil {
v.Responses = make(map[string]*design.ResponseDefinition)
}
if v.ResponseTemplates == nil {
v.ResponseTemplates = make(map[string]*design.ResponseTemplateDefinition)
}
if _, ok := v.Responses[name]; ok {
ReportError("multiple definitions for response template %s", name)
return
}
if _, ok := v.ResponseTemplates[name]; ok {
ReportError("multiple definitions for response template %s", name)
return
}
setupResponseTemplate(v, name, p)
}