datamodel-code-generator 使用教程
项目介绍
datamodel-code-generator
是一个用于从 JSON、OpenAPI、JSON Schema 和 YAML 数据源轻松转换为 Pydantic 模型和 dataclasses 数据类的生成器。它支持 Pydantic v1 和 v2,并提供了丰富的功能,如自定义模板和格式化器。
项目快速启动
安装
首先,你需要安装 datamodel-code-generator
。你可以通过 pip 进行安装:
pip install 'datamodel-code-generator[http]'
生成模型
以下是一个简单的示例,展示如何从本地文件生成模型:
datamodel-codegen --input api.yaml --output model.py
假设 api.yaml
内容如下:
openapi: "3.0.0"
info:
version: 1.0.0
title: Swagger Petstore
license:
name: MIT
servers:
- url: http://petstore.swagger.io/v1
paths:
/pets:
get:
summary: List all pets
operationId: listPets
tags:
- pets
parameters:
- name: limit
in: query
description: How many items to return at one time (max 100)
required: false
schema:
type: integer
format: int32
生成的 model.py
将包含相应的 Pydantic 模型。
应用案例和最佳实践
从 OpenAPI 生成模型
你可以从 OpenAPI 规范文件生成模型:
datamodel-codegen --input openapi.json --output models.py
从 JSON Schema 生成模型
同样,你可以从 JSON Schema 文件生成模型:
datamodel-codegen --input schema.json --output models.py
自定义模板
datamodel-code-generator
支持自定义模板,你可以通过 --custom-template-dir
参数指定自定义模板目录:
datamodel-codegen --input schema.json --output models.py --custom-template-dir my_templates
典型生态项目
Pydantic
datamodel-code-generator
生成的模型主要基于 Pydantic,Pydantic 是一个用于数据验证和设置的库,广泛用于 FastAPI 等项目中。
FastAPI
FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API,基于 Starlette 和 Pydantic。你可以使用 datamodel-code-generator
生成的模型作为 FastAPI 的请求和响应模型。
Dataclasses
Python 的 dataclasses 模块提供了一种方便的方法来定义具有默认值和类型注解的类。datamodel-code-generator
也支持生成 dataclasses 数据类。
通过这些模块的介绍和示例,你可以快速上手并充分利用 datamodel-code-generator
的功能,从而提高开发效率和代码质量。