好了,这是我要做的实时示例。我使用Scala Sttp作为我的Http客户端。我有一堆请求,所以我想让它更抽象。我想在抽象函数下概括所有get
请求,看起来像:
def getRequest(
uri: String,
queryString: String,
responseClass: **ANYCLASS**, --> I am unsure how to do this
trackingId: String,
component: String = "http-v2-client-get-request",
numberOfRetries: Int = 0
): Either[HttpErrorInfo, **ANYCLASS**] = {
val request = basicRequest
.get(uri"$uri")
.response(asJson[responseClass])
}
...
所以我的问题是如何替换responseClass
签名,这样我就可以提供任何case class
,这样它就能被正确映射。
对不起,如果我的问题有点糟糕,我是Scala的新手,还在学习如何动态地做事情
Try
def getRequest[T: Decoder](
uri: String,
queryString: String,
trackingId: String,
component: String = "http-v2-client-get-request",
numberOfRetries: Int = 0
): Either[HttpErrorInfo, T] = {
val request = basicRequest
.get(uri"$uri")
.response(asJson[T])
}
...
请注意上下文绑定的: Decoder
。