Je crée une React application native qui consommera une API avec la définition de Swagger 2.0. Je suis allé au dépôt de Swagger sur https://github.com/swagger-api/swagger -codegen # where-is-javascript et il pointe vers leur générateur Javascript à https://github.com/swagger-api/swagger-js .
Le problème est que le générateur est dynamique, et comme je vais intégrer le client dans une application mobile, le générateur dynamique n'est pas une option. Ils disent également qu'un projet tiers est disponible sur https://github.com/wcandillon/swagger-js-codegen , qui dit que le projet n'est plus maintenu et renvoie à https://github.com/swagger-api/swagger-codegen . (bien que ce générateur tiers fonctionne, je ne veux pas utiliser un outil obsolète qui pourrait se casser à tout moment car je mettrai à jour le client API lorsque de nouveaux points de terminaison arriveront. Et cet outil ne génère pas non plus de très bon code de toute façon car il dit dans son propre référentiel.)
À ce stade, je suis coincé. Quelle est la méthode prise en charge pour générer un client Javascript statique à partir de la définition Swagger pour une utilisation en React Native?
Vous pouvez utiliser Swagger Codegen pour générer un sdk client javascript. Toutefois, le code javascript utilisé ne fonctionnera pas avec React Native fetch implementation. Pour surmonter cela, vous pouvez simplement étendre l'implémentation de ApiClient
pour utiliser le React Récupération native comme:
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
});
}
}
Plus tard, en l'utilisant dans vos autres méthodes telles que
class CustomUsersApi extends UsersApi {
constructor() {
super(new CustomApiClient());
}
}
Pour une implémentation détaillée à ce sujet, vous pouvez consulter l'article de blog https://medium.com/@lupugabriel/using-swagger-codegen-with-reactnative-4493d98cac15