Генерация статического клиента Javascript из Swagger для использования в React Native - PullRequest
9 голосов
/ 02 апреля 2019

Я создаю приложение React Native, которое будет использовать API с определением Swagger 2.0. Я пошел в репозиторий 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, когда появятся новые конечные точки. И этот инструмент в любом случае также не генерирует действительно хороший код, как сказано в его собственном репо.)

В этот момент я застрял. Каков поддерживаемый способ создания статического клиента Javascript из определения Swagger для использования в React Native?

1 Ответ

1 голос
/ 10 апреля 2019

Вы можете использовать Swagger Codegen для генерации JavaScript-клиента sdk.Однако используемый в нем код javascript не будет работать с реализацией выборки React Native.Чтобы преодолеть это, вы можете просто расширить реализацию 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

...