跳转至

RESTful API

Cullinan 当前的 REST 栈由控制器装饰器与统一后的 Web Runtime 共同组成。

推荐控制器写法

from cullinan.web.controller import controller, get_api, post_api
from cullinan.web.params import Body, Path

@controller(url="/users")
class UserController:
    @get_api(url="/{user_id}")
    async def get_user(self, user_id: int = Path()):
        return {"id": user_id}

    @post_api(url="/")
    async def create_user(self, payload: dict = Body()):
        return {"created": True, "payload": payload}

普通字典、模型对象或显式 WebResponse 都可以作为处理器返回值。

当前运行时模型

  • 进入框架的请求会被归一化为 WebRequest
  • 路由匹配由 Router 负责
  • 处理器调用由 Dispatcher 负责
  • 输出响应统一归一化为 WebResponse
  • 服务器集成由 WebAdapter 承担

响应控制

当需要显式控制 header、cookie 或状态码时,直接返回 WebResponse

from cullinan.web.gateway import WebResponse

return WebResponse.json({"ok": True}, status_code=201)

迁移说明

新代码与新文档应使用:

  • WebRequest
  • WebResponse
  • WebAdapter

旧的 request / response / adapter 命名已不再是主要公开 API 面。

另见