假设我有一个用Golang Echo框架实现的REST API,我希望有一种方法在请求中使用可选的查询参数。
我想使用samber/mo库中的Option[T]单子。
例如,我有一个描述两个查询参数的结构:
type SearchInput struct {
MinPrice mo.Option[float64] `query:"minPrice"`
MaxPrice mo.Option[float64] `query:"maxPrice"`
SearchQuery mo.Option[string] `query:"searchQuery"`
}
如果我必须绑定常规的float64
字段,我会使用Echo中的ctx.Bind()
方法。然而,Echo没有为Option[T]
实现绑定器。准确地说,Echo设法绑定Option[float64]
,但在尝试绑定Option[string]
时产生错误。
我如何创建一个自定义绑定器?Echo文档给出了一个小提示,但没有提供任何有意义的示例。此外,我可以使用BindUnmarshaller()
接口,但在文档中没有实际示例仍然不清楚。
我尝试搜索Echo存储库问题/讨论中提到的类似问题,但没有发现任何重要问题。
1条答案
按热度按时间4ktjp1zp1#
要使它开箱即用,您需要将字符串查询参数用双引号括起来。
输出:
如果你想接受不带引号的字符串,你需要声明一个包含选项类型的自定义类型,并让自定义类型实现
echo.BindUnmarshaler
接口或encoding.TextUnmarshaler
接口。一个二个一个一个
输出: