Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/erwanlt/openapireader
Display information about API described in an OpenAPI documention
https://github.com/erwanlt/openapireader
java openapi
Last synced: about 1 month ago
JSON representation
Display information about API described in an OpenAPI documention
- Host: GitHub
- URL: https://github.com/erwanlt/openapireader
- Owner: ErwanLT
- License: mit
- Created: 2024-12-16T14:52:16.000Z (about 1 month ago)
- Default Branch: main
- Last Pushed: 2024-12-16T16:29:29.000Z (about 1 month ago)
- Last Synced: 2024-12-16T17:25:25.548Z (about 1 month ago)
- Topics: java, openapi
- Language: Java
- Homepage:
- Size: 8.79 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# OpenApiReader
## Description
OpenApiReader est une application Java permettant de lire, d’analyser et de regrouper les chemins (paths) d’une spécification OpenAPI. Cette application extrait les informations importantes comme les méthodes HTTP, les descriptions des endpoints, et les rôles de sécurité associés.## Fonctionnalités principales
- Récupération d'une spécification OpenAPI via une URL.
- Analyse des chemins (éléments "paths") pour regrouper les endpoints par racine.
- Extraction des détails des endpoints, y compris les méthodes HTTP, les descriptions, et les rôles de sécurité.
- Exclusion configurable de certains chemins (par exemple, ceux commençant par "test").## Prérequis
- Java 21 ou version ultérieure
- Maven pour la gestion des dépendances## Installation
1. Clonez ce répertoire :
```bash
git clone
```
2. Compilez le projet avec Maven :
```bash
mvn clean install
```## Utilisation
Exécutez l'application avec la commande suivante :
```bash
java -jar target/OpenApiReader.jar
```### Exemple
```bash
java -jar target/OpenApiReader.jar https://petstore.swagger.io/v2/swagger.json
```### Sortie attendue
L’application affiche les chemins regroupés par racine avec leurs détails :
```
==pet==
- GET /pet/findByStatus : Find pets by status
Roles : user,admin
- POST /pet : Add a new pet to the store
Roles : admin
```## Configuration
### Exclusion de chemins
Vous pouvez exclure certains chemins en modifiant la méthode `shouldExcludePath` dans le code :
```java
private static boolean shouldExcludePath(String path) {
List excludedPaths = List.of("test");
return excludedPaths.stream().anyMatch(path::startsWith);
}
```## Dépendances
Le projet utilise les bibliothèques suivantes :
- **Spring Web** : pour effectuer des requêtes HTTP.
- **Jackson** : pour analyser et manipuler le JSON.
- **SLF4J** : pour la journalisation.## Structure du Code
- `main(String[] args)` : Point d’entrée principal de l’application.
- `getOpenApiSpec(String url)` : Récupère la spécification OpenAPI via HTTP.
- `extractApi(String openApiJson)` : Analyse et regroupe les chemins d’API par racine.
- `groupPathsByRoot(JsonNode pathsNode)` : Réalise le regroupement des chemins par racine.
- `shouldExcludePath(String path)` : Vérifie si un chemin doit être exclu de l’analyse.## Limitations
- L’application suppose que les chemins contiennent un élément "tags" pour regrouper les endpoints.
- La gestion des rôles de sécurité repose sur un format JSON standard, mais peut ne pas fonctionner pour des spécifications personnalisées.## Contributions
Les contributions sont les bienvenues. Merci de soumettre une pull request avec une description claire des modifications.## Licence
Ce projet est sous licence MIT. Consultez le fichier `LICENSE` pour plus de détails.