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

Can*_*ğlu 10 javascript swagger swagger-2.0 react-native swagger-codegen

我正在构建一个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中使用的受支持方式是什么?

Dan*_*ash 3

您可以使用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
      });
  }
}
Run Code Online (Sandbox Code Playgroud)

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

class CustomUsersApi extends UsersApi {

 constructor() {
    super(new CustomApiClient());
  }
}
Run Code Online (Sandbox Code Playgroud)

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