feat(net/goai): add enhanced response status interface#3896
feat(net/goai): add enhanced response status interface#3896gqcn merged 29 commits intogogf:masterfrom
Conversation
|
@UncleChair Hello, thanks for your contribution, but I have a little suggestion for this implementing
type IEnhanceOperation interface{
EnhanceOperation(operation *goai.Operation, req interface{}, res interface{})
}
|
|
@gqcn Here are some of my opinions
I have also considered to use interface solution to modify the
Since the |
Yes, it is reseanable. But the |
Got it, then would we remove the Btw, where should the |
|
@UncleChair Indeed, it would be quite complicated for users if only providing
// ResponseStatusStruct is the structure for certain response status.
type ResponseStatusStruct = any
// IEnhanceResponseStatus is used to enhance the documentation of the response.
// Normal response structure could implement this interface to provide more information.
type IEnhanceResponseStatus interface {
EnhanceResponseStatus() map[StatusCode]ResponseStatusStruct
}
|
|
@gqcn Changed the interface related name
Actually I am also tring to generate json files for examples during the package v1
import (
"cssgen-api/api"
"github.com/gogf/gf/v2/errors/gcode"
"github.com/gogf/gf/v2/frame/g"
)
// parameters should use uppercase
type LoginReq struct {
g.Meta `path:"/login" tags:"Auth" method:"post" sum:"User Login"`
Username string `json:"username" v:"required-without:Email" des:"User Name" eg:"admin"`
Email string `json:"email" v:"required-without:Username" des:"User Email" eg:"[email protected]"`
Password string `json:"password" v:"required" des:"Password" eg:"adminPassword"`
}
type LoginRes struct {
Token string `json:"token" des:"JWT token"`
Expire int64 `json:"expire" des:"JWT expire time"`
}
type LoginRes401 struct {
g.Meta `status:"401" resEg:"resource/openapi/cssgen-api.api.auth.v1.LoginRes/401.json"`
}
func (r LoginRes) EnhanceResponseStatus() map[int]any {
return map[int]any{
401: LoginRes401{},
}
}
var LoginErrRes = map[int][]gcode.Code{
401: {
gcode.New(1, "No related users", nil),
gcode.New(2, "Wrong username or password", nil),
}
}
func (r LoginRes) GenerateJsonFile() (path string, err error) {
return api.GenerateJsonFile(r, LoginErrRes)
}If I want to generate a static file for the error list, I have to use some mechanism to generate the file first and fill the generated file path |
|
I see. It is quite complicated for users to handle type EnhancedStatusCode = int
type EnhancedStatusType struct{
Response any
Example any
}
func EnhanceResponseStatus() map[EnhancedStatusCode]EnhancedStatusTypeCurrently, we add |
|
@gqcn Would we keep the |
We need not keep |
Fixes #3889
ok github.com/gogf/gf/v2/net/goai coverage: 80.2% of statements