从 pydantic 到 aws_cdk.aws_apigateway.JsonSchema?

问题描述 投票:0回答:1

有人知道如何从 pydantic 模型转到 aws_cdk.aws_apigateway.jsonSchema 吗?我们正在使用它进行验证,并希望将其转换为在 api 网关上进行验证。到处寻找,我找不到任何东西可以做到这一点。

我知道有一种方法可以将 pydantic 模型转换为 json 模式(基本),但不是特定的 cdk jsonschema。

https://docs.aws.amazon.com/cdk/api/v1/python/aws_cdk.aws_apigateway/JsonSchema.html

https://docs.pydantic.dev/usage/schema/

python aws-api-gateway aws-cdk jsonschema pydantic
1个回答
0
投票

是的,可以从 Pydantic 模型生成与 AWS CDK 兼容的 JSON 模式。以下是您的操作方法:

首先,您需要安装 jsonschema 和 pydantic 库: pip 安装 jsonschema pydantic

像往常一样定义你的 Pydantic 模型:

来自 pydantic import BaseModel

我的模型类(基础模型): 富:海峡 栏:整数 使用 jsonschema 库从 Pydantic 模型生成 JSON 模式:

从 jsonschema 导入 Draft7Validator、RefResolver 从 jsonschema.validators 导入 validator_for 从 pydantic 导入 BaseModel 从输入 import Any, Dict

def generate_json_schema(model: Type[BaseModel]) -> Dict[str, Any]: """ 为 Pydantic 模型生成 JSON 模式。 """ 架构=模型.架构() 解析器 = RefResolver.from_schema(架构) ValidatorClass = validator_for(schema) 验证器 = ValidatorClass(模式,解析器=解析器) json_schema = 验证器.schema 返回 json_schema 使用生成的 JSON 架构创建 aws_cdk.aws_apigateway.JsonSchema 类的实例:

从 aws_cdk.aws_apigateway 导入 JsonSchema

json_schema = JsonSchema.from_schema(generate_json_schema(MyModel)) 这将创建一个 JsonSchema 实例,您可以将其传递给 API 网关资源以进行请求验证。

© www.soinside.com 2019 - 2024. All rights reserved.