Parse Swagger с ссылками в банке с openapi4j - PullRequest
0 голосов
/ 08 апреля 2020

Я пытаюсь проанализировать следующий файл swagger с openapi4j:

{
  "openapi" : "3.0.0",
  "info" : {
    "title" : "My Service",
    "version" : "1.0.0"
  },
  "paths" : {
    "/endpoint" : { "$ref" :  "swagger2.json#/paths/get_endpoint" },
  }
}

Вы можете видеть, что у него есть простая ссылка на другой файл в той же папке.

Я анализирую Файл Swagger со следующим:

URL url = Thread.currentThread().getContextClassLoader().getResource(filePath);
openAPI = new OpenApi3Parser().parse(url, false);

Локально в моей IDE, это прекрасно работает. Ссылка загружена, и я могу проверить запросы на нее без проблем. Однако, когда я собираю проект, он может нормально загрузить исходный файл чванства, но ни один из ссылок. Я получаю следующую ошибку:

StackTrace: org.openapi4j.core.exception.ResolutionException: Failed to load document from 'swagger2.json'
    at org.openapi4j.core.model.reference.AbstractReferenceResolver.registerDocument(AbstractReferenceResolver.java:118)
    at org.openapi4j.core.model.reference.AbstractReferenceResolver.findReferences(AbstractReferenceResolver.java:92)
    at org.openapi4j.core.model.reference.AbstractReferenceResolver.resolve(AbstractReferenceResolver.java:53)
    at org.openapi4j.core.model.v3.OAI3Context.resolveReferences(OAI3Context.java:103)
    at org.openapi4j.core.model.v3.OAI3Context.<init>(OAI3Context.java:73)
    at org.openapi4j.core.model.v3.OAI3Context.<init>(OAI3Context.java:47)
    at org.openapi4j.parser.OpenApi3Parser.parse(OpenApi3Parser.java:34)
    at org.openapi4j.parser.OpenApi3Parser.parse(OpenApi3Parser.java:18)
    at org.openapi4j.parser.OpenApiParser.parse(OpenApiParser.java:53)

Я не уверен, возможно ли это. Я предполагаю, что мне, возможно, придется скопировать ресурсы моего проекта во время выполнения в файловую систему где-нибудь, чтобы получить более легкий доступ. Я хотел бы избежать этого маршрута, если это возможно.

1 Ответ

1 голос
/ 09 апреля 2020

Оказывается, это была ошибка в openapi4j, которая разрешала ссылки с URI вместо URL. Это было исправлено в 0,9

...