hertz icon indicating copy to clipboard operation
hertz copied to clipboard

[Feature Request]auto gen swagger comment for handler

Open Rainshaw opened this issue 2 years ago • 5 comments

Is your feature request related to a problem? Please describe.

when using idl for generate code, we currently add some simple comments for each handler https://github.com/cloudwego/hertz/blob/0d8b98bc8cf61c16866359e551959e962597d33f/cmd/hz/generator/handler.go#L247-L261

but we have fully information for this endpoint, e.g. http method, serializer type, url path, request params, response params, and we have full info for request struct and response struct, like which field is used in path/query/body. So we can add a flag for hz to control generating swagger style comment for each method.

previous relates issues #28, #538, #558, #692

Describe the solution you'd like

In HttpMethod.InitComment, generate swagger style comment for using https://github.com/hertz-contrib/swagger

Describe alternatives you've considered

maybe we could provider a template like layout and package for the swagger comments.

Additional context

Add any other context or screenshots about the feature request here.

Rainshaw avatar May 06 '23 08:05 Rainshaw

Good idea, I'll add a responsive comment feature after I've researched it clearly

FGYFFFF avatar May 06 '23 09:05 FGYFFFF

                comment := "// " + m.Name + "\n"
		comment += "// @Summary " + text + "\n"
		comment += "// @Description \n"
		comment += "// @Tags " + strings.Join(strings.Split(m.OutputDir, "/"), " ") + "\n"
		if m.Serializer == "JSON" {
			comment += "// @Accept json\n// @Produce json\n"
		}
		comment += "// @Response 200 {object} " + m.ReturnTypeName + "\n"
		comment += "// @Router " + m.Path + " [" + m.HTTPMethod + "]"
		m.Comment = comment

I find some pain points:

  1. router in hertz use ':' for path params but in openapi it uses {}
  2. m.RequestTypeName can not simply used in comment
  3. text is always blank string, as for thriftgo now lack support for comment.

Rainshaw avatar May 08 '23 05:05 Rainshaw

good idea~

FGYFFFF avatar May 09 '23 03:05 FGYFFFF

I have been working around on another approach, an example here: https://github.com/ringsaturn/protoc-gen-go-hertz/tree/main/_example/hertz-blog-service

ringsaturn avatar Mar 10 '24 08:03 ringsaturn

I have been working around on another approach, an example here: https://github.com/ringsaturn/protoc-gen-go-hertz/tree/main/_example/hertz-blog-service

👍🏻,可以联系我下,加入到社区开发者群中。

li-jin-gou avatar Mar 10 '24 11:03 li-jin-gou