#swagger #swagger-codegen #swagger-codegen-maven-plugin
Вопрос:
Я создал клиент python из нашего приложения spring boot, используя swagger-codegen.
Все API работают хорошо, за исключением случаев, когда дело доходит до вызова API, которые имеют необязательные параметры (требуется = False).
- При вызове API с необязательным параметром, когда мы не передаем какое-либо значение параметру api, по умолчанию оно равно None.
def get_http_info(self, **kwargs):
# This is the optional query parameter
all_params = ['region_id']
# It gets set here if present in the API call, otherwise it is None by default.
query_params = []
if 'region_id' in params:
query_params.append(('regionId', params['region_id'])) # noqa: E501
- Затем это передается как значение «Нет» на внутренний сервер, который фактически ожидает значение null (если необязательный параметр не задан).
@Override
public ResponseEntity<List<Info>> getInfo(@Valid String regionId) {
// When regionId is left blank in the python API call, it is coming to the backend as "None"
}
- Следовательно, внутренний сервер возвращает неверный код состояния.
Я столкнулся с этими двумя проблемами с кодом swagger (похоже, они все еще открыты), которые, похоже, связаны:
- https://github.com/swagger-api/swagger-codegen/issues/7957
- https://github.com/swagger-api/swagger-codegen/issues/9039
Есть ли способ гарантировать, что при создании клиента python с помощью swagger-codegen мы создадим конструктор, который не будет передавать необязательный параметр запроса, если он не указан в вызове API ?