首次使用drf_yasg,咨询OPENAPI的IN_QUERY等选项功能
关于drf_yasg中OpenAPI参数位置选项(IN_QUERY等)的作用说明
这些IN_*常量对应OpenAPI规范里的参数位置字段in,用来指定API参数的传递方式,drf_yasg直接复用了这些定义,下面是常用选项的具体作用:
IN_QUERY:参数通过URL查询字符串传递,比如/api/articles?category=tech&limit=5里的category和limit就属于这类。在Swagger文档里会被归类到「Query Parameters」区域,用户可以直接在界面上输入值测试。IN_PATH:参数是URL路径的固定组成部分,比如/api/articles/{article_id}里的article_id,请求时必须替换为具体ID。这类参数默认是必填项,Swagger文档里会把它显示在路径模板中。IN_HEADER:参数通过HTTP请求头传递,比如鉴权用的Authorization头,或者自定义的X-App-Version这类标识头。适合那些不想暴露在URL里的参数。IN_COOKIE:参数通过请求Cookie传递,比如会话验证用的sessionid,常用于需要保持会话状态的接口。IN_FORM:参数通过表单数据(application/x-www-form-urlencoded)传递,一般用于POST/PUT请求的表单提交场景,Swagger里会展示在「Form Data」区域。IN_BODY:参数是请求体的结构化数据(比如JSON),用于传递复杂的对象参数,对应Django REST Framework里的序列化器。Swagger文档会自动渲染请求体的结构示例,方便用户填写测试数据。
在drf_yasg中使用时,需要从对应模块导入这些常量,示例代码:
from drf_yasg.openapi import IN_QUERY, Parameter from drf_yasg.utils import swagger_auto_schema @swagger_auto_schema( manual_parameters=[ Parameter('page', IN_QUERY, description='页码', type='integer') ] ) def list_articles(request): # 视图逻辑 pass
内容的提问来源于stack exchange,提问作者Shangazi Mkubwa
相关产品推荐
相关产品推荐

