如何在从 SmartBear/Swagger 生成的代码生成 Java REST API 中实现自定义逻辑

问题描述

我已经按照 Swagger/OpenAPI 3.0 标准在 .yaml 文件中定义了 API 文档/端点。在这个 .yaml 文件中,我使用了 SwaggerHub/SmartBear 的代码生成工具来为 Client SDK java 项目生成代码。成功生成的项目代码如下结构:

- docs
- gradle
- lib
- src
  - main
    - java
      - io.swagger.client
        - api
          - RouteApi
          - myApi.yaml
        - auth
          - ApiKeyAuth
          - Authentication
          - HttpBasicAuth
          - OAuth
          - OAuthFlow
        - model
          - Input
          - ModelApiResponse
          - Route
        - ApiCallback
        - apiclient         
        - ApiException
        - ApiResponse
        - Configuration
        - GzipRequestInterceptor
        - JSON
          - DateTypeAdapter
          - LocalDateTypeAdapter
          - OffsetDateTimeTypeAdapter
          - sqlDateTypeAdapter
        - Pair
        - ProgressRequestBody
          - ProgressRequestListener
        - ProgressResponseBody
          - ProegressListener
    - AndroidMainfest.xml
  - test
- target
- pom.xml
- swagger-java-client-iml
- README.md

生成的项目结构相当复杂,我不确定如何以及在何处实现我的自定义 java 逻辑以处理 Api 请求。简单来说就是需要取入多个字符串参数,输出多个字符串参数。

另外,我不确定如何在 IntelliJ IDEA 中运行/发布生成的 API,这是我目前使用的 IDE。

README 文件建议我运行以下 java 代码

import io.swagger.client.*;
import io.swagger.client.auth.*;
import io.swagger.client.model.*;
import io.swagger.client.api.RouteApi;

import java.io.File;
import java.util.*;

public class RouteApiExample {

    public static void main(String[] args) {
        
        RouteApi apiInstance = new RouteApi();
        List<Input> body = Arrays.asList(new input()); // List<Input> | List of input object
        try {
            apiInstance.createRoutesWithArrayInput(body);
        } catch (ApiException e) {
            System.err.println("Exception when calling RouteApi#createRoutesWithArrayInput");
            e.printstacktrace();
        }
    }
}

但这只是编译而没有结果。

总而言之,如果您有任何关于使用 SmartBear 的代码生成工具在 Java 中从 OpenAPI3.0/swagger 文档生成的 API 中实现自定义逻辑的资源、建议或教程,我将不胜感激。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)