web-dev-qa-db-ja.com

Swaggerから静的Javascriptクライアントを生成して、React Nativeで使用します

React Swagger 2.0定義のAPIを使用するネイティブアプリを作成しています。Swaggerのリポジトリ にアクセスしましたhttps://github.com/ swagger-api/swagger-codegen#where-is-javascript であり、 にあるJavascriptジェネレーターをポイントしていますhttps://github.com/swagger-api/swagger-js

問題は、ジェネレーターが動的であることです。モバイルアプリにクライアントを埋め込むので、動的ジェネレーターはオプションではありません。彼らはまた、 https://github.com/wcandillon/swagger-js-codegen で利用可能なサードパーティのプロジェクトがあると言っています。はもはや維持されておらず、 https://github.com/swagger-api/swagger-codegen をポイントしています。 (サードパーティジェネレーターは機能しますが、新しいエンドポイントが到着したときにAPIクライアントを更新するため、いつでも機能しなくなる可能性がある非推奨のツールを使用したくありません。また、このツールは、とにかく本当に良いコードを生成しません。それはそれ自身のレポで言う。)

この時点で行き詰まっています。 React Nativeで使用するためにSwagger定義から静的Javascriptクライアントを生成するためにサポートされている方法は何ですか?

10
Can Poyrazoğlu

Swagger Codegen を使用して、JavaScriptクライアントSDKを生成できます。ただし、ここで使用されているJavaScriptコードはReact Nativeのフェッチ実装では機能しません。これを克服するには、ApiClientの実装を拡張してReact次のようなネイティブフェッチ:

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

0
Dani Akash