从Swagger生成静态Javascript客户端以在React Native中使用

问题描述 投票:9回答:1

我正在构建一个React Native应用程序,它将使用带有Swagger 2.0定义的API。我在https://github.com/swagger-api/swagger-codegen#where-is-javascript去了Swagger的回购,它指向他们在https://github.com/swagger-api/swagger-js的Javascript生成器。

问题是生成器是动态的,因为我将客户端嵌入到移动应用程序中,所以动态生成器不是一个选项。他们还说,https://github.com/wcandillon/swagger-js-codegen有一个第三方项目,该项目已经不再维护,并指向https://github.com/swagger-api/swagger-codegen。 (当第三方生成器工作时,我不想使用可能会破坏的弃用工具,因为当新端点到达时我将更新API客户端。而且该工具也不会生成真正好的代码它在自己的回购中说。)

此时我被困住了。从Swagger定义生成静态Javascript客户端以在React Native中使用的支持方式是什么?

javascript react-native swagger swagger-2.0 swagger-codegen
1个回答
1
投票

您可以使用Swagger Codegen生成javascript客户端sdk。但是,其中使用的javascript代码不适用于React Native的fetch实现。要解决这个问题,您可以简单地扩展ApiClient的实现以使用React Native fetch,如:

class CustomApiClient extends ApiClient {


 callApi(path, httpMethod,   pathParams,queryParams,collectionQueryParams, headerParams, formParams, bodyParam,authNames, contentTypes, accepts,returnType, callback) {
    return fetch(`${this.basePath}${path}`,
      {
        method: httpMethod
      });
  }
}

稍后在其他方法中使用它,例如

class CustomUsersApi extends UsersApi {

 constructor() {
    super(new CustomApiClient());
  }
}

有关此的详细实现,您可以参考博客文章https://medium.com/@lupugabriel/using-swagger-codegen-with-reactnative-4493d98cac15

© www.soinside.com 2019 - 2024. All rights reserved.