Почему метод getPaths Swagger Parser не возвращает все пути? - PullRequest
2 голосов
/ 28 марта 2020

У меня есть Swagger 1.2 do c. json и следующий Java код, который использует Swagger Parser для извлечения всех путей из этого документа. Проблема в том, что парсер не получает все пути (из 50 он показывает мне только 27).

public class Temps {

    public static void main (String[]args ) {
        int totale=0;
        Swagger swagger = new SwaggerParser().read("C:\\Users\\eya\\Desktop\\nodes.json");
         Map<String, Path> paths = swagger.getPaths(); 
         for (Map.Entry<String, Path> p : paths.entrySet()) {
                Path path = p.getValue();
                totale ++;
                Map<HttpMethod, Operation> operations = path.getOperationMap();
                for (java.util.Map.Entry<HttpMethod, Operation> o : operations.entrySet()) {
                    System.out.println("===");
                    System.out.println("PATH:" + p.getKey());
                    System.out.println("Http method:" + o.getKey());
                    System.out.println("Summary:" + o.getValue().getSummary());
                    System.out.println("Parameters number: " + o.getValue().getParameters().size());
                    for (Parameter parameter : o.getValue().getParameters()) {
                        System.out.println(" - " + parameter.getName());
                    }
                    System.out.println("Responses:");
                    for (Map.Entry<String, Response> r : o.getValue().getResponses().entrySet()) {
                        System.out.println(" - " + r.getKey() + ": " + r.getValue().getDescription());
                    }

                }
         }
         System.out.println(totale);
    }
}

Кто-нибудь знает, что вызывает эту проблему?

1 Ответ

1 голос
/ 28 марта 2020

В вашем определении API есть повторяющиеся пути, например:

"path": "api/v2/nodes/{id}",
"description": "Get a node",
...
"path": "api/v2/nodes/{id}",
"description": "Get a virtual folder",
"path": "api/v2/nodes/actions",
"description": "Get actions for the selected node IDs",
...
"path": "api/v2/nodes/actions",
"description": "Get actions for the selected node IDs",

Повторяющиеся пути недопустимы по спецификации Swagger 1.2:

В массиве apis ДОЛЖЕН быть только один объект API на path.

Парсер просто игнорирует дубликаты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...