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