caicloud / nirvana

Golang Restful API Framework for Productivity

Home Page:https://caicloud.github.io/nirvana/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Auto parameter string default value without double quotation make api docs generating failed

wutz opened this issue · comments

Is this a BUG REPORT or FEATURE REQUEST?:

/kind bug

What happened:

nirvana api starting failed with logging:

FATAL 0321-12:50:40.034+08 api.go:61 | json: error calling MarshalJSON for type spec.Swagger: json: error calling MarshalJSON for type *spec.Paths: json: error calling MarshalJSON for type spec.PathItem: json: error calling MarshalJSON for type *spec.Operation: json: error calling MarshalJSON for type spec.OperationProps: json: error calling MarshalJSON for type spec.Parameter: json: error calling MarshalJSON for type *swagger.rawJSON: invalid character 'w' looking for beginning of value

What you expected to happen:

nirvana api can work correctly.

How to reproduce it (as minimally and precisely as possible):

Define a struct which relating to Auto parameter, set string default value without double quotation:

type Option struct {
  Hello string `source:"Query,hello,default=world"`
}

Anything else we need to know?:

If set default value with double quotation, then nirvana api can work, but bussiness function will be getting addition double quotation from that option.

type Option struct {
  Hello string `source:"Query,hello,default=\"world\""`
}

Additionally, how to support not basic type correctly, e.g.

type Option struct {
  Hello string `source:"Query,hello,default=\"world\""`
  Timeout time.Duration `source:"Query,timeout,default=10s"`
  Perm os.FileMode `source:"Query,perm,default=0755"`
}

For non-basic types, you can register custom converters by service.RegisterConverter().

It's a problem. I have not found an effective way to make them work together.