#openapi #openapi-generator
#openapi #openapi-генератор
Вопрос:
прежде всего, я хочу извиниться за свой английский. Это не моя вина, а испанская система образования: D.
Я только начал с миграции openapi, и мне нужна ваша помощь. Мне нравится использовать разные пути, которые ссылаются на один и тот же OperationId. Я объяснил это на примере:
paths:
"/my-path/my-resource":
get:
tags:
- my-api
operationId: getMyResource
responses:
...
[omitted]
...
"/another-path/another-resource":
get:
tags:
- my-api
operationId: getMyResource
responses:
...
[omitted]
...
Возможно ли это?
Большое спасибо за ваше время.
Ответ №1:
Ваш вопрос помечен openapi-generator
, но, похоже, это общий вопрос о спецификации OpenAPI.
Идентификаторы операций должны быть уникальными для каждой операции. Раздел Operation object спецификации определяет OperationId как:
Уникальная строка, используемая для идентификации операции. Идентификатор ДОЛЖЕН быть уникальным среди всех операций, описанных в API. Значение OperationId чувствительно к регистру. Инструменты и библиотеки МОГУТ использовать OperationId для уникальной идентификации операции, поэтому рекомендуется следовать общим соглашениям об именовании в программировании.
Выделенное жирным шрифтом «с учетом регистра» взято непосредственно из спецификации, но подчеркивает отличный момент в передаче этих спецификаций через инструментарий (именно поэтому они должны быть уникальными). В openapi-generator мы используем OperationId для определения имен методов или функций в сгенерированных выходных данных. Многие языки не поддерживают перегруженные методы, а некоторые даже не поддерживают нестандартный корпус (например, Go). Наш инструментарий преобразует OperationId в соответствии с языком вывода и, следовательно, в данном случае более строгий, чем спецификация. Вы можете создать пользовательский генератор и расширить логику, которая обрабатывает операции, если вам абсолютно необходимы повторяющиеся имена методов и если ваш целевой вывод поддерживает его.
Комментарии:
1. Соответствующая часть здесь не учитывает регистр, но «Идентификатор ДОЛЖЕН быть уникальным среди всех операций, описанных в API». Таким образом, ответ на вопрос OP — нет.
2. @Helen спасибо, я забыл, отвечая, что OP не является носителем языка. Я обновил свой ответ, чтобы более четко указать требование уникальности заранее, и что объяснение, которое я предоставил после цитаты из спецификации, описывает, почему это так.