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

时间:2019-04-02 19:41:14

标签: javascript react-native swagger swagger-2.0 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中使用的受支持方式是什么?

1 个答案:

答案 0 :(得分: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