gpt4 book ai didi

json - 如何将所有拒绝内容转换为Spray中的自定义json?

转载 作者:行者123 更新时间:2023-12-04 13:32:59 25 4
gpt4 key购买 nike

当spray(spray.io)产生拒绝时,它会以字符串形式响应。由于我所有的API客户端都将假定我的API仅返回json,因此我想全局地使每个拒绝都符合我们的错误对象格式的有效json对象。我怎样才能做到这一点?

错误对象格式如下所示

{
'details' : 'Something happened in the app. boooo!',
'errorType' : 'Unknown'
}

errorType是我的内部枚举样式的值列表,例如 UserNotFoundNeedPaidAccount

最佳答案

如果您只想将所有拒绝项转换为自定义json格式,则可以创建一个拒绝处理程序。例如,我将其放在ServiceActor中并执行以下操作:

class ApiServiceActor extends Actor with HttpServiceActor with ApiServices {
def jsonify(response: HttpResponse): HttpResponse = {
response.withEntity(HttpBody(ContentType.`application/json`,
JSONObject(Map(
"details" -> response.entity.asString.toJson,
"errorType" -> ApiErrorType.Unknown.toJson
)).toString()))
}

implicit val apiRejectionHandler = RejectionHandler {
case rejections => mapHttpResponse(jsonify) {
RejectionHandler.Default(rejections)
}
}

def receive = runRoute {
yourRoute ~ yourOtherRoute ~ someOtherRoute
}
}

关于json - 如何将所有拒绝内容转换为Spray中的自定义json?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16929396/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com