我已经创建了tapir端点:
val getEndpoint = endpoint.get
.securityIn(auth.bearer[String]())
.in("players" / path[PlayerId]("playerId"))
.in(query[PlayerRequest]("query"))
.errorOut(someErrors)
现在,我想读取所有传递的值:bearer token
、playerId
和query
。因此,我创建了ZIO
服务器逻辑:
PlayersEndpoint.getEndpoint.zServerLogic { case (playerId, query) =>
//some logic to do...
}
它工作正常,但没有bearer token
。在这里我无法读取bearer token
。我试图将其更改为以下内容:
PlayersEndpoint.getEndpoint.zServerSecurityLogic{ case (token) =>
//do smth with token
}.zServerLogic { case (playerId, query) =>
//some logic to do...
}
但它没有工作。我想读取所有3个值,并决定在检查令牌后做什么。文档和示例非常差,没有显示如何从tapir读取令牌。你知道我应该如何正确地做吗?
2条答案
按热度按时间pod7payv1#
你可以试试这个:
库的版本是
curl 试验
参考:
41zrol4v2#
我没有IDE给予你确切的代码,但是这个想法是你的
zServerSecurityLogic
的返回可以在下面的zServerLogic
中使用。通常,您将在
zServerSecurityLogic
中验证令牌,并返回某种User
值,您可以将其用作zServerLogic
中的输入。但是,您也可以在安全逻辑中“什么也不做”,只传递令牌,以便它在主逻辑中可用。