AWS API Gateway:导入Swagger API架构的问题

时间:2016-10-04 15:20:55

标签: amazon-web-services swagger aws-api-gateway

我尝试从Swagger(http://petstore.swagger.io/v2/swagger.json)导入PetStore架构,但导致出现以下错误。 你能帮我理解这个问题吗?

错误:

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.

2 个答案:

答案 0 :(得分:3)

感谢您报告此事。虽然API Gateway努力支持完整的swagger 2.0规范,但API Gateway强制执行可能会导致某些有效的swagger文件失败。

这已在AWS论坛中详细讨论过:https://forums.aws.amazon.com/message.jspa?messageID=720511

希望这澄清一下。

答案 1 :(得分:1)

我遇到了很多错误,例如将swagger定义导入aws api网关。当我将jackson json定义添加到我的api返回的模型中时,所有这些都消失了,例如:

@JsonProperty("id")
private String id;

@JsonProperty("target")
private Long target;

向我的模型中的所有字段添加JsonProperty解决了我的所有导入问题。