我知道这不是有效的语法,但有没有办法在servant中完成这样的事情?
type StandardAPI = "foo" :> Get '[JSON] Whatever
type CustomAPI = StandardAPI :<|> "customroute" :> Get '[JSON] Blah
换句话说,组成API。在Spock中,我可以用monadic路线构造来做到这一点,但我不确定如何在仆人中这样做。
这样我可以跨API重用共享路由。使用此功能的另一个原因是某些类型不能与客户端生成器一起使用,例如Raw。
答案 0 :(得分:8)
是的,引用Servant documentation即可使用
type CombinedAPI = "users" :> UsersAPI
:<|> "products" :> ProductsAPI
server :: Server CombinedAPI
server = usersServer :<|> productsServer
usersServer :: Server UsersAPI
usersServer = -- implementation
productsServer :: Server ProductsAPI
productsServer = -- implementation