我们使用ServiceStack来构建web。在这种情况下,我希望能够从API端点返回一个400 (BadRequest)的响应,并提供一些额外的数据来指示错误的具体原因。
我所知道的返回特定状态代码的两种方法是:
HttpResult
的一个实例。我宁愿不返回HttpResult
的实例。这将要求我使方法返回类型更通用(当前返回类型是特定的响应DTO),还有其他原因(与我们使用ServiceStack有关),这是有问题的。
抛出异常的情况很奇怪。根据响应的形式,即使在异常情况下,ServiceStack也使用自定义DTO (而文档确认了这一点)。HttpError
异常类具有一个Response
属性,该属性对应于用于发出响应的DTO,但将Response
属性设置为自定义DTO的实例并不具有预期效果。它只影响响应DTO上的ResponseStatus
属性的值。DTO上的其他属性未初始化,就好像ServiceStack生成了响应DTO的新实例并使用它(但是从提供的DTO设置其ResponseStatus
属性)。
我说的都是对的吗?是否还有另一种没有我前面提到的缺点的选择来形成响应?
发布于 2017-04-05 06:54:31
如果要用附加元数据来修饰响应,请在HttpResult
中返回响应--这就是类的全部用途。直接返回的响应DTO的HTTP响应体与包装在HttpResult
中的HTTP响应体没有明显的区别。
或者,您可以直接修改base.Response
,查看定制HTTP响应上的文档。
抛出异常只返回HTTP错误响应。ServiceStack具有隐式结构化错误处理,其中它捕获从任何响应DTO提取的ResponseStatus中的错误。
https://stackoverflow.com/questions/43231413
复制相似问题