路由响应
Volo-HTTP 路由响应
路由响应
Volo-HTTP
的 handler 也可以返回任意 impl IntoResponse
的类型, 例如:
handler response 使用技巧
handler 除了传入的参数可以自定义以外, 返回值类型也是可以自定义的, 如:
以上三个函数都是合法的 handler,因为这些返回值类型都实现了 IntoResponse
这一 trait。
在框架中,Form
, Json
等类型也默认实现了 IntoResponse
,并且可以在响应时添加 Content-Type。
使用 Json 作为应答
复合 Response 类型
IntoResponse
这一 trait 不仅支持 String, Json 等类型,还有一些其他的方式可以使用, 如:
使用 Result<&'static str, StatusCode>
作为返回值类型,
可以在返回 Ok 时使用 str 的内容作为 Response
,
在返回 Err 时使用 StatusCode
作为 Response
的状态码,并返回一个空的实现。
而使用 (StatusCode, String)
可以将该 String
作为 Response
的 Body,并将 Response
的状态码设为 StatusCode
的值。
为自己的类型实现 IntoResponse
对于自定义的类型,可以通过实现 IntoResponse
的方式作为 handler 的返回值,下面给一个例子。
在业务逻辑中,我们经常会定义一些自己内部的错误类型或者错误码,
由于框架对 Result<T, E>
也实现了 IntoResponse
,
所以我们可以通过对错误实现 IntoResponse
的方式方便地编写 handler:
以上代码的响应格式非常不规范,仅供功能展示使用,在实际的业务中请根据需求使用统一的响应格式
最后修改
April 23, 2025
: docs(Eino): update "fan-in and merge" (#1292) (bcfda3d)