在 AWS Gateway cdk 中使用数组作为响应模型
Use an array as response model in AWS Gateway cdk
我正在尝试创建一个打字稿 aws cdk 来构建一个 API 带有自己的 swagger 文档的网关。
有一个简单的端点返回“供应商”列表,但我们不知道如何在 cdk 中指定它。
这里是代码:
export function CreateSupplierMethods(apigw: apigateway.Resource,restApiId: string, scope: cdk.Construct, api: apigateway.RestApi) {
let suppliers = apigw.addResource('suppliers')
let supplierModel = new apigateway.Model(scope, "supplier-model", {
modelName: "supplier",
restApi: api,
contentType: 'application/json',
schema: {
description: "Supplier data",
title: "Supplier",
properties: {
code: { type: apigateway.JsonSchemaType.STRING, minLength: 4, maxLength: 6},
name: { type: apigateway.JsonSchemaType.STRING, maxLength: 81},
}
},
})
let getSuppliers = suppliers.addMethod('GET', new apigateway.MockIntegration(), {
methodResponses: [{
statusCode: "200",
responseModels: {
"application/json": supplierModel,
}
},
{
statusCode: "401",
}]
})
}
如您所见,GET 将 supplierModel 作为输出。
我怎么说“returns supplierModel 列表”?我希望我可以将此模型用于供应商列表和供应商的单个实例(例如以 id 作为输入的 GET 方法)。
这可能吗?如果是,如何?
查看生成的 json,我正在尝试这样的内容:
但我现在得到的是完全不同的:
我怎样才能得到像第一张图片那样的结果?
您正在创建模型并将其分配给方法。
创建这些模型的数组,然后将该数组分配给方法。
let supplierModelArray = new apigateway.Model(scope, "supplier-model-array", {
modelName: "supplier-array",
restApi: api,
contentType: 'application/json',
schema: {
description: "Supplier data",
title: "Supplier",
type: apigateway.JsonSchemaType.ARRAY
items: {type: supplierModel}
},
})
并将api中的"application/json": supplierModel
改为"application/json": supplierModelArray
我正在尝试创建一个打字稿 aws cdk 来构建一个 API 带有自己的 swagger 文档的网关。 有一个简单的端点返回“供应商”列表,但我们不知道如何在 cdk 中指定它。
这里是代码:
export function CreateSupplierMethods(apigw: apigateway.Resource,restApiId: string, scope: cdk.Construct, api: apigateway.RestApi) {
let suppliers = apigw.addResource('suppliers')
let supplierModel = new apigateway.Model(scope, "supplier-model", {
modelName: "supplier",
restApi: api,
contentType: 'application/json',
schema: {
description: "Supplier data",
title: "Supplier",
properties: {
code: { type: apigateway.JsonSchemaType.STRING, minLength: 4, maxLength: 6},
name: { type: apigateway.JsonSchemaType.STRING, maxLength: 81},
}
},
})
let getSuppliers = suppliers.addMethod('GET', new apigateway.MockIntegration(), {
methodResponses: [{
statusCode: "200",
responseModels: {
"application/json": supplierModel,
}
},
{
statusCode: "401",
}]
})
}
如您所见,GET 将 supplierModel 作为输出。 我怎么说“returns supplierModel 列表”?我希望我可以将此模型用于供应商列表和供应商的单个实例(例如以 id 作为输入的 GET 方法)。
这可能吗?如果是,如何?
查看生成的 json,我正在尝试这样的内容:
但我现在得到的是完全不同的:
我怎样才能得到像第一张图片那样的结果?
您正在创建模型并将其分配给方法。 创建这些模型的数组,然后将该数组分配给方法。
let supplierModelArray = new apigateway.Model(scope, "supplier-model-array", {
modelName: "supplier-array",
restApi: api,
contentType: 'application/json',
schema: {
description: "Supplier data",
title: "Supplier",
type: apigateway.JsonSchemaType.ARRAY
items: {type: supplierModel}
},
})
并将api中的"application/json": supplierModel
改为"application/json": supplierModelArray