#amazon-web-services #swagger #aws-api-gateway
#amazon-web-services #развязность #aws-api-gateway #swagger
Вопрос:
Я попытался импортировать схему магазина домашних животных из Swagger (http://petstore.swagger.io/v2/swagger.json ), но привел к следующим ошибкам. Можете ли вы, пожалуйста, помочь мне разобраться в этой проблеме?
Ошибки:
Your API was not imported due to errors in the Swagger file.
Unable to create model for 'Order': Invalid model specified: Validation Result: warnings : [], errors : [Invalid model schema specified]
Unable to create model for 'User': Invalid model specified: Validation Result: warnings : [], errors : [Invalid model schema specified]
Unable to create model for 'Category': Invalid model specified: Validation Result: warnings : [], errors : [Invalid model schema specified]
Unable to create model for 'Tag': Invalid model specified: Validation Result: warnings : [], errors : [Invalid model schema specified]
Unable to put method 'POST' on resource at path '/pet': Invalid model name specified: null
Unable to put method 'PUT' on resource at path '/pet': Invalid model name specified: null
Unable to put method 'POST' on resource at path '/store/order': Invalid model name specified: null
Unable to put method 'POST' on resource at path '/user': Invalid model name specified: null
Unable to put method 'PUT' on resource at path '/user/{username}': Invalid model name specified: null
Additionally, these warnings were found:
Unsupported security definition type 'oauth2' for 'petstore_auth'. Ignoring.
API Key security definition 'api_key' has unexpected name or location. Ignoring.
Unable to insert model 'Pet' due to an unsatisfied schema reference.
Reference to model 'Pet' not found. Ignoring.
Reference to model 'Pet' not found. Ignoring.
Reference to model 'Pet' not found. Ignoring.
Reference to model 'Pet' in 200 response to method 'GET /pet/findByStatus' not found. Ignoring.
Reference to model 'Pet' not found. Ignoring.
Reference to model 'Pet' in 200 response to method 'GET /pet/findByTags' not found. Ignoring.
Reference to model 'Pet' not found. Ignoring.
Invalid format for model application/json for method GET
Parameter type formData for parameter name not supported. Ignoring.
Parameter type formData for parameter status not supported. Ignoring.
Parameter type formData for parameter additionalMetadata not supported. Ignoring.
Parameter type formData for parameter file not supported. Ignoring.
Unsupported model type 'MapProperty' in 200 response to method 'GET /store/inventory'. Ignoring.
Reference to model 'Order' not found. Ignoring.
Reference to model 'Order' not found. Ignoring.
Invalid format for model application/json for method GET
Reference to model 'User' not found. Ignoring.
Reference to model 'User' not found. Ignoring.
Request schema for 'POST /user/createWithArray' has a reference to unknown model 'User'. Ignoring.
API Gateway does not support Swagger's 'default' method response (found on 'POST /user/createWithArray')
Reference to model 'User' not found. Ignoring.
Request schema for 'POST /user/createWithList' has a reference to unknown model 'User'. Ignoring.
API Gateway does not support Swagger's 'default' method response (found on 'POST /user/createWithList')
Unsupported model type 'StringProperty' in 200 response to method 'GET /user/login'. Ignoring.
API Gateway does not support Swagger's 'default' method response (found on 'GET /user/logout')
Reference to model 'User' not found. Ignoring.
Invalid format for model application/json for method GET
Reference to model 'User' not found. Ignoring.
Ответ №1:
Спасибо, что сообщили об этом. Хотя API Gateway стремится поддерживать полную спецификацию swagger 2.0, все еще существуют ограничения, которые применяет API Gateway, которые могут привести к сбою некоторых допустимых файлов swagger.
Это подробно обсуждалось здесь, на форуме AWS: https://forums.aws.amazon.com/message.jspa?messageID=720511
Надеюсь, это прояснит ситуацию.
Комментарии:
1. Существуют инструменты для преобразования схемы в совместимую с AWS, например, swaggerhub отключит неподдерживаемые функции перед развертыванием на шлюзе.
2. @fehguy Я пытался использовать swaggerhub, я импортировал свой файл swagger, но не могу понять, как экспортировать, отключив неподдерживаемые функции AWS.
3. @Balaji У меня такая же проблема, как отключить неподдерживаемые функции AWS из моего файла swagger? После стольких лет AWS все еще не может соответствовать стандартам?
4. Ссылка больше не действительна. Отлично!
Ответ №2:
Я получал много ошибок, подобных этому, импортируя определения swagger в aws api gateway. Все они исчезли, когда я добавил определения jackson json в свои модели, возвращаемые моим api, например:
@JsonProperty("id")
private String id;
@JsonProperty("target")
private Long target;
добавление JsonProperty
во все поля в моих моделях решило все мои проблемы с импортом.