首页 文章

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

提问于
浏览
2

(Swugger的新手)

在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能够使用prefix ='get_'生成与HTTP GET方法相对应的所有操作 . 具体来说,上面可能会生成:get_findPetsByStatus .

有没有办法告诉swagger codegen前缀方法?

请注意,我想使用swagger-codegen本身而不是类似APIMatic的替代品 .

1 回答

  • 4

    实现AbstractJavaCodegen(或实现它的子类)并重载postProcessOperations函数以将前缀添加到操作(CodegenOperation类的operationId属性) . 有关构建和运行自定义codegen的说明,请参阅making-your-own-codegen-modules .

    伪代码:

    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;
        }
    }
    

相关问题