- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在使用 OpenRasta 2.0 构建 REST API,它的可扩展性非常好——例如,我们已经设法相当轻松地使用 DotNetOpenAuth 插入 OAuth 身份验证。
但是我现在已经到了需要定义错误条件响应的地步。我们正在采用有关 HTTP 错误代码的标准 - 但我也意识到返回有意义的响应,就像 Twitter(REST 的常年例子)一样:
{
"error":"This method requires authentication.",
"request":"\/1\/statuses\/followers.json"
}
从我们所有的处理程序返回 OperationResult、手动捕获异常并映射到 ResponseResource 的最佳方式是什么?与 OpenRasta 的其余功能相比,这在我看来是相当多的开销。
或者我们是否应该编写某种贡献者来捕获管道中抛出的异常并全局处理问题?也许只翻译特定类型的异常(RestException?)。
基本上,我想知道最佳实践是什么以及其他人是如何处理它的。
谢谢。
编辑:
今天看了一段时间后,我无法弄清楚如何包装处理程序调用 - 我已经声明自己是一个 OperationInterceptor 派生类,并使用 ResourceSpace.Uses.PipelineContributor<OperationInterceptorContributor>()
将其连接到管道中。并设置自定义依赖 ResourceSpace.Uses.CustomDependency<IOperationInterceptor, ExceptionHandlerInterceptor>(DependencyLifetime.PerRequest)
但无论我尝试使用哪种方法并将其包装在 try-catch 中,异常仍然会冒泡。
是RewriteOperation
吗, BeforeExecute
或 AfterExecute
那是最适合设置陷阱的地方 - 如果可以的话,你能给我一个关于如何开始的线索吗?
谢谢。
最佳答案
您可以做几件事来实现您想要的。
首先,您可以构建一个 IOperationInterceptor,将对处理程序的调用包装在 try/catch block 中,并在 ICommunicationContext 上分配正确的 OperationResult。
然后,如果您希望在 json 中对其进行序列化,您需要将 operationresult 的 ResponseResource 属性分配给描述您的错误的类型(我们现在将其称为“TitsUpResource”)。
最后,将该类型注册为没有URI的资源,这样你就可以向它添加json编解码器了
ResourceSpace.Has.ResourcesOfType().WithoutUri.TranscodedBy 或您可能需要的任何其他内容。
关于c# - 在 OpenRasta 处理程序中处理异常时,转换为响应的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4186306/
我正在寻找项目、引用应用程序、示例等,以供引用,当然还有代码。不是简单的helloworlds,你知道吗?提前致谢。 最佳答案 https://github.com/openrasta/openras
在 OpenRasta 中使用编解码器 uri 文件扩展名时,或者无法解析 uri 并返回 404。没有文件扩展名一切正常。 编解码器是为对象资源定义的,我同时使用 XmlDataContract 和
通常在 OpenRasta 中有这样的配置: ResourceSpace.Has.ResourcesOfType() .AtUri("/customers/region/{region}")
我为 OpenRasta 创建了一个新的自定义 JSON 编解码器,效果很好。 执行处理程序时,我需要将参数传递给编解码器的 write 方法,但找不到任何有关如何执行此操作的文档。 我注意到在实现的
Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。 想改善这个问题吗?更新问题,以使为on-topic。 6
我有一个站点正在为来自多个客户端(浏览器、其他应用程序、unix shell 脚本、python 脚本等)的相同资源的 JSON 表示进行相当困难的轮询。 我想添加一些缓存,以便一些资源在服务器中缓存
在 openrasta 中对媒体类型进行版本控制的正确方法是什么?到目前为止,在我们的一个 rest api 上,我们指定了带有版本号的自定义媒体类型: application/vnd.company
我即将开始一个 OpenRasta 项目(基于 http web 服务的 xml)。 OpenRasta 看起来很棒,但不幸的是,互联网上的工作示例似乎很少。查看项目的测试端,如果我的处理程序返回强类
我正在使用 Openrasta 框架。我有一个在我的 API 中使用的简单 POCO,它将作为 ResponseResource 发送给客户端。如下所示: Public class User {
您好,我正在构建一个具有基于 token 的身份验证的应用程序,例如: http://www.host.com/resource?token=589437534 我本来打算写一个拦截器或类似的东西,但
虽然 Mono 支持对我们来说不是什么大问题,但我认为 OpenRasta 支持它,因为它有一些关于它的提交消息.. 好吧,我尝试在 Mono 上构建它并获得了模棱两可的类型引用(在手动创建了 10
我在 ASP.NET 4 Web 应用程序中使用 OpenRasta 2.0.3214.437。我正在使用以下方法在内部容器中注册自定义依赖项: ResourceSpace.Uses.CustomDe
根据此处的建议,我正在考虑是否用 OpenRasta 替换 WCF。 在 Visual Studio 中,如何像使用 WCF/ASMX 服务一样使用 OpenRasta添加服务引用,这使用 WSDL
是否可以在 OpenRasta 中同时上传文件和发布元数据(在帖子正文中)?如果是这样,您是否有如何执行此操作的示例? 最佳答案 我不确定我是否理解问题?当您从 html 表单上传文件时,您会将整个表
谁能给我一个关于如何获得返回字节数组的 OpenRasta 处理程序的快速指针。在 ResourceSpace 中公开,而不是 JSON 或 XML 对象。即我不希望它转码,我只想能够将媒体类型设置为
我已经使用 OpenRasta 构建了一个服务。我正在验证操作拦截器中的资源。如果验证失败,则会以 JSON 形式返回带有 ErrorResource 的 BadRequest。 ErrorResou
我从服务器发送以下响应: return new OperationResult.Created { CreatedResourceUrl = getURI(newDuplicateKfEntity),
我正在测试使用 OpenRasta 作为 ASP.NET MVC 的可行替代方案的可行性。但是,我遇到了有关身份验证的绊脚石。 让我明确一点,“开放式摘要身份验证”目前不是一个选项。 我读到 Scot
我是 openRasta 框架的新手。我有一个名为 Project 的资源。我有 2 种不同类型的 GET 可以在此资源上完成,因为我需要关于这两个 GET 的不同信息。我的配置是这样的 Resour
我注意到 OpenRasta.Core 有一个 HtmlErrorCodec,它负责在处理程序抛出异常时呈现服务器错误页面。 当我向异常抛出处理程序发出 JSON Ajax 请求时,会选择此编解码器并
我是一名优秀的程序员,十分优秀!