本文整理匯總了Golang中github.com/raphael/goa/design.APIDefinition.MediaTypeWithIdentifier方法的典型用法代碼示例。如果您正苦於以下問題:Golang APIDefinition.MediaTypeWithIdentifier方法的具體用法?Golang APIDefinition.MediaTypeWithIdentifier怎麽用?Golang APIDefinition.MediaTypeWithIdentifier使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類github.com/raphael/goa/design.APIDefinition
的用法示例。
在下文中一共展示了APIDefinition.MediaTypeWithIdentifier方法的1個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: Generate
// Generate the application code, implement codegen.Generator.
func (g *Generator) Generate(api *design.APIDefinition) (_ []string, err error) {
go utils.Catch(nil, func() { g.Cleanup() })
defer func() {
if err != nil {
g.Cleanup()
}
}()
if api == nil {
return nil, fmt.Errorf("missing API definition, make sure design.Design is properly initialized")
}
title := fmt.Sprintf("%s: Application Contexts", api.Name)
imports := []*codegen.ImportSpec{
codegen.SimpleImport("fmt"),
codegen.SimpleImport("strconv"),
codegen.SimpleImport("github.com/raphael/goa"),
}
g.ContextsWriter.WriteHeader(title, TargetPackage, imports)
err = api.IterateResources(func(r *design.ResourceDefinition) error {
return r.IterateActions(func(a *design.ActionDefinition) error {
ctxName := codegen.Goify(a.Name, true) + codegen.Goify(a.Parent.Name, true) + "Context"
ctxData := ContextTemplateData{
Name: ctxName,
ResourceName: r.Name,
ActionName: a.Name,
Payload: a.Payload,
Params: a.AllParams(),
Headers: r.Headers.Merge(a.Headers),
Routes: a.Routes,
Responses: MergeResponses(r.Responses, a.Responses),
API: api,
}
return g.ContextsWriter.Execute(&ctxData)
})
})
g.genfiles = append(g.genfiles, g.contextsFilename)
if err != nil {
return
}
if err = g.ContextsWriter.FormatCode(); err != nil {
return
}
title = fmt.Sprintf("%s: Application Controllers", api.Name)
imports = []*codegen.ImportSpec{
codegen.SimpleImport("github.com/julienschmidt/httprouter"),
codegen.SimpleImport("github.com/raphael/goa"),
}
g.ControllersWriter.WriteHeader(title, TargetPackage, imports)
var controllersData []*ControllerTemplateData
api.IterateResources(func(r *design.ResourceDefinition) error {
data := &ControllerTemplateData{Resource: codegen.Goify(r.Name, true)}
err := r.IterateActions(func(a *design.ActionDefinition) error {
context := fmt.Sprintf("%s%sContext", codegen.Goify(a.Name, true), codegen.Goify(r.Name, true))
action := map[string]interface{}{
"Name": codegen.Goify(a.Name, true),
"Routes": a.Routes,
"Context": context,
}
data.Actions = append(data.Actions, action)
return nil
})
if err != nil {
return err
}
if len(data.Actions) > 0 {
controllersData = append(controllersData, data)
}
return nil
})
g.genfiles = append(g.genfiles, g.controllersFilename)
if err = g.ControllersWriter.Execute(controllersData); err != nil {
return
}
if err = g.ControllersWriter.FormatCode(); err != nil {
return
}
title = fmt.Sprintf("%s: Application Resource Href Factories", api.Name)
g.ResourcesWriter.WriteHeader(title, TargetPackage, nil)
err = api.IterateResources(func(r *design.ResourceDefinition) error {
m := api.MediaTypeWithIdentifier(r.MediaType)
var identifier string
if m != nil {
identifier = m.Identifier
} else {
identifier = "plain/text"
}
canoTemplate := r.URITemplate()
canoTemplate = design.WildcardRegex.ReplaceAllLiteralString(canoTemplate, "/%v")
var canoParams []string
if ca := r.CanonicalAction(); ca != nil {
if len(ca.Routes) > 0 {
canoParams = ca.Routes[0].Params()
}
}
data := ResourceData{
//.........這裏部分代碼省略.........