首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用ServiceStack返回具有特定状态代码的自定义DTO的选项有哪些?

使用ServiceStack返回具有特定状态代码的自定义DTO的选项有哪些?
EN

Stack Overflow用户
提问于 2017-04-05 04:37:15
回答 1查看 923关注 0票数 2

我们使用ServiceStack来构建web。在这种情况下,我希望能够从API端点返回一个400 (BadRequest)的响应,并提供一些额外的数据来指示错误的具体原因。

我所知道的返回特定状态代码的两种方法是:

  1. 抛出一个异常。
  2. 返回HttpResult的一个实例。

我宁愿不返回HttpResult的实例。这将要求我使方法返回类型更通用(当前返回类型是特定的响应DTO),还有其他原因(与我们使用ServiceStack有关),这是有问题的。

抛出异常的情况很奇怪。根据响应的形式,即使在异常情况下,ServiceStack也使用自定义DTO (而文档确认了这一点)。HttpError异常类具有一个Response属性,该属性对应于用于发出响应的DTO,但将Response属性设置为自定义DTO的实例并不具有预期效果。它只影响响应DTO上的ResponseStatus属性的值。DTO上的其他属性未初始化,就好像ServiceStack生成了响应DTO的新实例并使用它(但是从提供的DTO设置其ResponseStatus属性)。

我说的都是对的吗?是否还有另一种没有我前面提到的缺点的选择来形成响应?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-05 06:54:31

如果要用附加元数据来修饰响应,请在HttpResult中返回响应--这就是类的全部用途。直接返回的响应DTO的HTTP响应体与包装在HttpResult中的HTTP响应体没有明显的区别。

或者,您可以直接修改base.Response,查看定制HTTP响应上的文档。

抛出异常只返回HTTP错误响应。ServiceStack具有隐式结构化错误处理,其中它捕获从任何响应DTO提取的ResponseStatus中的错误。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43231413

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文