Closed
Description
🐛 Bug Report
message GetSubjectPermissions2DReply{
map<string, ListOfString> permissions = 1 [(grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = {title: "展开的二级权限列表", description:"展开的二级权限列表"}];
}
generated swagger json:
"HodorGetSubjectPermissions2DReply": {
"type": "object",
"properties": {
"permissions": {
"type": "object",
"additionalProperties": {
"$ref": "#/definitions/HodorListOfString"
}
}
},
"title": "GetSubjectPermissions2DReply"
},
permissions.title and permissions.description is not set.
Your Environment
grpc-gateway v1.14.6
Other Info
I dig into the source code of protoc-gen-swagger, found the problem is in template.go:schemaOfField
:
// schemaOfField returns a swagger Schema Object for a protobuf field.
func schemaOfField(f *descriptor.Field, reg *descriptor.Registry, refs refMap) swaggerSchemaObject {
const (
singular = 0
array = 1
object = 2
)
var (
core schemaCore
aggregate int
)
fd := f.FieldDescriptorProto
if m, err := reg.LookupMsg("", f.GetTypeName()); err == nil {
if opt := m.GetOptions(); opt != nil && opt.MapEntry != nil && *opt.MapEntry {
fd = m.GetField()[1]
aggregate = object
}
}
if fd.GetLabel() == pbdescriptor.FieldDescriptorProto_LABEL_REPEATED {
aggregate = array
}
……
}
When the field is map type, fd = m.GetField()[1]
use the value's FieldDescriptorProto. Because the mapentry is auto generate, so the fd.Options is always nil.
Metadata
Metadata
Assignees
Labels
No labels