跳转至

API 控制器路由装饰器

route 类是一个函数装饰器,用于将 Controller 类函数注释为具有特定 HTTP 方法的端点。

For instance:

from ninja_extra import route, api_controller

@api_controller
class MyController:
    @route.get('/test')
    def test(self):
        return {'message': 'test'}

route 提供了预定义的方法,这些方法简化了各种操作的创建,并且它们的名称与相应的 HTTP 方法对齐:

  • GET: route.get
  • POST: route.post
  • PUT: route.put
  • DELETE: route.delete
  • PATCH: route.patch
  • 通用 - 用于操作组合,例如 route.generic(methods=['POST', 'PATCH'])


初始化参数


以下是 NinjaExtra 中 route 类的参数的概述描述:

  • path :必需的唯一终结点路径字符串。

  • `methods` :端点所需的 HTTP 方法集合,例如 `['POST', 'PUT']` 
    
  • `auth` :定义端点的身份验证方法。默认: `NOT_SET`
    
  • `response` :定义响应格式为 `dict[status_code, schema]`  `Schema` 。用于验证返回的响应。默认: `NOT_SET`
    
  • `operation_id` :可选的唯一标识符,用于区分路径视图中的操作。默认: `NOT_SET`
    
  • `summary` :可选的摘要,用于描述端点。默认值: `None`
    
  • `description` :可选描述,提供有关端点的其他详细信息。默认值: `None`
    
  • `tags` :用于按文档目的对端点进行分组的字符串列表。默认: `None`
    
  • `deprecated` :一个可选的布尔参数,表示端点是否已弃用。默认值: `None`
    
  • `by_alias` :应用于筛选 `response` 架构对象的可选参数。默认: `False`
    
  • `exclude_unset` :应用于筛选 `response` 架构对象的可选参数。默认: `False`
    
  • `exclude_defaults` :应用于筛选 `response` 架构对象的可选参数。默认值: `False`
    
  • `exclude_none` :应用于筛选 `response` 架构对象的可选参数。默认值: `False`
    
  • `include_in_schema` :表示端点是否应出现在 Swagger 文档中。默认值: `True`
    
  • `url_name` :为可以使用 Django 中的 `reverse` 函数解析的端点提供名称。默认值: `None`
    
  • `permissions` :定义了终结点的路由权限类集合。默认: `None`
    

这些参数的作用类似于在 Django-Ninja 中创建端点时使用的那些参数,但已被抽象出来适用于 NinjaExtra 中的控制器类。

异步路由定义

在 Django-Ninja-Extra 中, route 类支持定义异步端点,类似于 Django-Ninja。此功能适用于大于 3.0 的 Django 版本。

For example:

import asyncio
from ninja_extra import http_get, api_controller

@api_controller
class MyController:
    @http_get("/say-after")
    async def say_after(self, delay: int, word: str):
        await asyncio.sleep(delay)
        return {'saying': word}

在这个插图中, say_after 端点被定义为一个使用 async 关键字的异步函数,允许在端点内进行异步操作。

信息


本文总阅读量