fix(plugin): fix delete last request body parameter

This commit is contained in:
mrh
2025-07-24 20:56:50 +08:00
committed by 马荣鸿
parent 9b3814e2c5
commit 6e7372f12c
5 changed files with 24 additions and 50 deletions

View File

@@ -22,6 +22,8 @@ import (
"github.com/getkin/kin-openapi/openapi3"
"github.com/coze-dev/coze-studio/backend/domain/plugin/entity"
"github.com/coze-dev/coze-studio/backend/api/model/crossdomain/plugin"
common "github.com/coze-dev/coze-studio/backend/api/model/plugin_develop_common"
"github.com/coze-dev/coze-studio/backend/pkg/errorx"
@@ -31,6 +33,14 @@ import (
func APIParamsToOpenapiOperation(reqParams, respParams []*common.APIParameter) (*openapi3.Operation, error) {
op := &openapi3.Operation{}
if reqParams != nil && len(reqParams) == 0 {
op.Parameters = []*openapi3.ParameterRef{}
op.RequestBody = entity.DefaultOpenapi3RequestBody()
}
if respParams != nil && len(respParams) == 0 {
op.Responses = entity.DefaultOpenapi3Responses()
}
hasSetReqBody := false
hasSetParams := false

View File

@@ -165,6 +165,9 @@ func (p *pluginServiceImpl) UpdateBotDefaultParams(ctx context.Context, req *Upd
if !ok {
return fmt.Errorf("the '%s' media type is not defined in request body", model.MediaTypeJson)
}
if op.RequestBody == nil || op.RequestBody.Value == nil {
op.RequestBody = entity.DefaultOpenapi3RequestBody()
}
if op.RequestBody.Value.Content == nil {
op.RequestBody.Value.Content = map[string]*openapi3.MediaType{}
}
@@ -182,16 +185,12 @@ func (p *pluginServiceImpl) UpdateBotDefaultParams(ctx context.Context, req *Upd
}
if op.Responses == nil {
op.Responses = map[string]*openapi3.ResponseRef{}
op.Responses = entity.DefaultOpenapi3Responses()
}
oldRespRef, ok := op.Responses[strconv.Itoa(http.StatusOK)]
if !ok {
oldRespRef = &openapi3.ResponseRef{
Value: &openapi3.Response{
Content: map[string]*openapi3.MediaType{},
},
}
oldRespRef = entity.DefaultOpenapi3Responses()[strconv.Itoa(http.StatusOK)]
op.Responses[strconv.Itoa(http.StatusOK)] = oldRespRef
}

View File

@@ -354,7 +354,16 @@ func needResetDebugStatusTool(_ context.Context, nt, ot *model.Openapi3Operation
}
}
if nt.RequestBody == nil && ot.RequestBody == nil {
return false
}
if (nt.RequestBody == nil && ot.RequestBody != nil) ||
(nt.RequestBody != nil && ot.RequestBody == nil) {
return true
}
nReqBody, oReqBody := nt.RequestBody.Value, ot.RequestBody.Value
if len(nReqBody.Content) != len(oReqBody.Content) {
return true
}