【问题标题】:Generate static Javascript client from Swagger for use in React Native从 Swagger 生成静态 Javascript 客户端以在 React Native 中使用
【发布时间】:2019-08-24 05:29:36
【问题描述】:

我正在构建一个 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。 (虽然第 3 方生成器可以工作,但我不想使用可能随时中断的已弃用工具,因为我将在新端点到达时更新 API 客户端。而且该工具也不会生成真正好的代码,因为它在自己的仓库中说。)

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

【问题讨论】:

标签: javascript react-native swagger swagger-2.0 swagger-codegen


【解决方案1】:

您可以使用Swagger Codegen 生成一个javascript 客户端sdk。但是,其中使用的 javascript 代码不适用于 React Native 的 fetch 实现。为了克服这个问题,您可以简单地扩展 ApiClient 的实现以使用 React Native 获取,例如:

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

【讨论】:

  • 有趣。原始回购具有误导性,但是您答案中的链接效果很好。
猜你喜欢
  • 1970-01-01
  • 2013-05-04
  • 1970-01-01
  • 1970-01-01
  • 2016-03-28
  • 2017-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多