.package(url: "https://github.com/Einstore/VaporErrorKit.git", from: "0.0.1")
允许与框架无关的服务器端库拥有通用的错误类型,同时允许在最终应用程序中轻松进行错误处理。
WebError 库由三个产品组成
VaporErrorKit
- 这个库WebErrorKit
的扩展,用于 NIO
使你的错误符合 WebError
(来自 WebErrorKit
包)
如果你的错误是
String
RawRepresentable
(String 枚举),你将免费获得code
属性 (参见下面的响应输出)
enum MyError: String, WebError {
case somethingHasHappened
}
上面的错误将生成以下错误响应
// Status 500
{
"code": "my_error.something_has_happened"
}
enum MyError: String, WebError {
case somethingHasHappened
var statusCode: Int {
return 417
}
var reason: String? {
return "Something has happened!!!"
}
}
上面的错误将生成以下错误响应
// Status 417
{
"code": "my_error.something_has_happened",
"reason": "Something has happened!!!"
}
对于不符合 String
和 RawRepresentable
的错误,你可以如下使用 SerializableWebError
enum MyError: SerializableWebError {
case itsComplicated(complication: String)
var serializedCode: String {
switch self {
case .itsComplicated(complication: let c):
return "its_complicated:\(c)"
}
}
}
上面的错误将生成以下错误响应
// Status 500
{
"code": "my_error.its_complicated:huge_problem"
}
在你的 configure
方法中注册 WebErrorMiddleware
s.register(MiddlewareConfiguration.self) { c in
// Create _empty_ middleware config
var middlewares = MiddlewareConfiguration()
// Catches errors and converts to HTTP response
try middlewares.use(c.make(WebErrorMiddleware.self))
return middlewares
}
500
localizedDescription
基础错误类型。
Ondrej Rafaj @rafiki270
MIT; Copyright 2019 - Einstore