如何从 minos 中的 RestRequest 访问 aiohttp 的请求

Posted

技术标签:

【中文标题】如何从 minos 中的 RestRequest 访问 aiohttp 的请求【英文标题】:How can I access the aiohttp's Request from a RestRequest in minos 【发布时间】:2022-01-20 06:52:53 【问题描述】:

我有一个用@enroute.rest.command装饰器装饰的处理函数,所以我的函数接收到一个RestRequest实例,但我想直接访问aiohttp.web.Request来直接访问rel_url属性。我该怎么做?

我当前的代码如下:

from minos.networks import RestRequest, RestResponse, enroute


@enroute.rest.command("/products/create", "POST")
async def handle_product_create(request: RestRequest) -> RestResponse:
    ...
    return RestResponse("created!)

【问题讨论】:

【参考方案1】:

minos.networks.RestRequest 提供了raw_request 属性,它可以访问内部的aiohttp.web.Request 实例,以便您可以访问它的任何方法或属性

from aiohttp import web
from minos.networks import RestRequest, RestResponse, enroute


@enroute.rest.command("/products/create", "POST")
async def handle_product_create(request: RestRequest) -> RestResponse:
    raw_request: web.Request = request.raw_request
    print(raw_request.rel_url)
    ...
    return RestResponse("created!)

【讨论】:

以上是关于如何从 minos 中的 RestRequest 访问 aiohttp 的请求的主要内容,如果未能解决你的问题,请参考以下文章

如何在 minos 中向服务添加定期任务?

如何使用 Grapevine 4.0 在 RestRequest 和 RestResponse 中传递二进制有效负载?

mino 路径格式的bucket 数据访问

RestRequest 在本地工作,但不是来自天蓝色“请求被中止:无法创建 SSL/TLS 安全通道。”

Android java.lang.UnsupportedClassVersionError: com/android/dx/command/Main : Unsupported major.mino

如何在 QuickBlox 中禁用日志语句?