Java 如何在swagger codegen中设置方法名称前缀?

Java 如何在swagger codegen中设置方法名称前缀?,java,swagger-codegen,Java,Swagger Codegen,(新手大摇大摆) 在swagger规范文件中,operationId是操作的名称,对应于HTTP方法 比如说, "/pet/findByStatus": { "get": { "tags": [ "pet" ], "summary": "Finds Pets by status", "description": "Multiple status values can be provided with

(新手大摇大摆)

在swagger规范文件中,operationId是操作的名称,对应于HTTP方法

比如说,

 "/pet/findByStatus": {
      "get": {
        "tags": [
          "pet"
        ],
        "summary": "Finds Pets by status",
        "description": "Multiple status values can be provided with comma separated strings",
        "operationId": "findPetsByStatus",
如上所示,operationId=findPetsByStatus。假设我想为java代码中的所有get操作生成一个前缀,前缀为“get”

例如,我希望swagger codegen生成与HTTP GET方法相对应的所有操作,前缀为“GET”。具体来说,在上面,它可能会生成:get_findPetsByStatus

有没有办法让swagger codegen为方法添加前缀

请注意,我希望使用swagger codegen本身,而不是APIMatic之类的替代方法。

实现(或实现它的子类)并重载postProcessOperations函数,以在操作(CodegenOperation类的operationId属性)前加前缀。有关构建和运行自定义codegen的说明,请参阅

伪代码:

public class MyCodegen extends AbstractJavaCodegen{ \\or 
    [...]
    @Override
    public Map<String, Object> postProcessOperations(Map<String, Object> objs) {
        super.postProcessOperations(objs);
        Map<String, Object> operations = (Map<String, Object>) objs.get("operations");
        if (operations != null) {
            List<CodegenOperation> ops = (List<CodegenOperation>) operations.get("operation");
            for (CodegenOperation operation : ops) {
                if(operation.httpMethod.equals("GET"){
                    operation.operationId = "get_" + operation.operationId;
                }[...]
            }
        }
        return objs;
    }
}
公共类MyCodegen扩展了AbstractJavaCodegen{\\or
[...]
@凌驾
公共地图后处理操作(地图objs){
超级后处理操作(objs);
映射操作=(Map)objs.get(“操作”);
if(操作!=null){
List ops=(List)operations.get(“operation”);
用于(代码操作:ops){
if(operation.httpMethod.equals(“GET”){
operation.operationId=“get_”+operation.operationId;
}[...]
}
}
返回对象;
}
}