c#-从Web API 2端点返回自定义HTTP状态代码

我正在使用WebAPI 2中的服务,并且端点当前返回IHttpActionResult。我想返回状态码BadResult(message),但是由于它不在422枚举中,所以我不知所措 发送,因为所有构造函数都需要一个HttpStatusCode参数

就目前情况而言,我将返回BadResult(message),但是返回422 +消息对我的客户来说更具描述性和实用性。 有任何想法吗?

5个解决方案

78 votes

根据C#规范:

枚举类型可以采用的一组值不受其枚举成员的限制。 特别是,枚举的基础类型的任何值都可以转换为枚举类型,并且是该枚举类型的不同有效值

因此,您可以将状态代码422强制转换为HttpStatusCode。

控制器示例:

using System.Net;

using System.Net.Http;

using System.Web.Http;

namespace CompanyName.Controllers.Api

{

[RoutePrefix("services/noop")]

[AllowAnonymous]

public class NoOpController : ApiController

{

[Route]

[HttpGet]

public IHttpActionResult GetNoop()

{

return new System.Web.Http.Results.ResponseMessageResult(

Request.CreateErrorResponse(

(HttpStatusCode)422,

new HttpError("Something goes wrong")

)

);

}

}

}

lilo.jacob answered 2020-02-29T15:05:06Z

23 votes

return Content((HttpStatusCode) 422, whatEver);

功劳是:对于非OK响应,返回带有IHttpActionResult的内容

并且您的代码必须为<= 999

请忽略100到200之间的代码。

peyman answered 2020-02-29T15:05:34Z

3 votes

我用这种方式简单而优雅。

public ActionResult Validate(User user)

{

return new HttpStatusCodeResult((HttpStatusCode)500,

"My custom internal server error.");

}

然后是角度控制器。

function errorCallBack(response) {

$scope.response = {

code: response.status,

text: response.statusText

}});

希望对您有帮助。

Ricardo G Saraiva answered 2020-02-29T15:06:03Z

0 votes

为此,您可能需要使用操作过滤器属性。 没有什么花哨。 只需创建一个类并从c#中的ActionFilterAttribute类继承即可。 然后重写名为OnActionExecuting的方法以实现此方法。 然后,只需在任何控制器的头上使用此过滤器即可。 以下是一个演示。

在需要在ActionFilterAttribute中生成基于自定义状态代码的消息的情况下,可以通过以下方式编写:

if (necessity_to_send_custom_code)

{

actionContext.Response = actionContext.Request.CreateResponse((HttpStatusCode)855, "This is custom error message for you");

}

希望这可以帮助。

Sajeeb Chandan answered 2020-02-29T15:06:32Z

0 votes

另一个简化的示例:

public class MyController : ApiController

{

public IHttpActionResult Get()

{

HttpStatusCode codeNotDefined = (HttpStatusCode)422;

return Content(codeNotDefined, "message to be sent in response body");

}

}

Content是在抽象类ApiController(控制器的基础)中定义的虚拟方法。 参见以下声明:

protected internal virtual NegotiatedContentResult Content(HttpStatusCode statusCode, T value);

themefield answered 2020-02-29T15:06:59Z

c# webapi返回html,c#-从Web API 2端点返回自定义HTTP状态代码相关推荐

  1. java 调用webapi json_java通过url调用web api并接收其返回的json

    java通过url调用webapi并接收其返回的json数据,但现在结果总是:{"result":4,"data":{}}(未认证:),帮助文档如下:API使用 ...

  2. webapi输出炜json_asp.net web api只返回json数据格式

    asp.net web api默认是同时支持返回xml和json数据格式的.这种机制是因为有web api框架中的SupportedMediaTypes的存在. 具体返回什么样的数据格式,你可以在请求 ...

  3. ASP.NET Web API中的返回值

    本文将Web API中常用的返回值罗列了一下,如需要进一步详细了解,请点击这篇文章 返回值 继承接口 描述 void 无 返回http状态码204,告诉客户端此请求没有返回值 Json<T> ...

  4. VBS 请求WebAPI接口_如何设计WEB API

    前言 我一直认为WEB API设计是后端工程师的活,对WEB API设计规范理解的不是很深,正是因为之前看过不同后端工程师的Web API设计难以对接前端产品,导致经常需要修改接口,浪费了很多时间,专 ...

  5. 关于名片全能王扫描,返回切边增强图片web api的图片数据分割

    这个web api的接口是返回一个vcf的文件,文件中以END:VCARD和"\r\n"为结束符,后面的数据到文件末尾就是图片数据 首先,要以END:VCARD为结束符,就只能从中 ...

  6. java自定义返回码_java – 自定义HTTP状态代码

    我考虑在一个项目中使用 fluent-http. 我从一个简单的"登录/密码"页面开始.我用字段登录名和密码创建一个简单的POJO: public class LoginReque ...

  7. java post请求返回500错误信息_Retrofit API Post call 返回错误 500,适用于 Postman

    我正在尝试使用改进 2 使用其他 API,我已经能够使用一些端点,但注册端点不断返回 http 500 错误代码,但在使用邮递员测试时工作正常. @POST("auth/signup/&qu ...

  8. ASP.NET MVC4中调用WEB API的四个方法

    当今的软件开发中,设计软件的服务并将其通过网络对外发布,让各种客户端去使用服务已经是十分普遍的做法.就.NET而言,目前提供了Remoting,WebService和WCF服务,这都能开发出功能十分强 ...

  9. Asp.Net Web API 2第一课——入门

    前言 Http不仅仅服务于Web Pages.它也是一个创建展示服务和数据的API的强大平台.Http是简单的.灵活的.无处不在的.你能想象到几乎任何的平台都会有HTTP服务库.HTTP服务可以涉及到 ...

最新文章

  1. Bundle Adjustment原理及应用(附实战代码)
  2. 教程:4、文件权限和访问方式
  3. 多种方式测量AMP328频率响应
  4. python访问k8s的api_如何通过Python Kubernetes客户端连接microk8s API?
  5. uva10954 - Add All(multiset功能)
  6. iOS Mach异常和signal信号
  7. html ssm写用户登陆验证,ssm 使用token校验登录的实现
  8. t检验自由度的意义_t检验的原理是什么?有什么意义?谢谢
  9. leetcode·动态规划
  10. 完整图书馆管理系统(包含设计思路、图形界面、后台数据库)
  11. mro列表_方法解析顺序(MRO)
  12. 明日书苑:《九成宫醴泉铭》单字放大米字格临帖字帖
  13. 麻雀虽小,五脏俱全:从一个小功能看软件开发过程[转]
  14. css banner滚动,css编写banner轮播
  15. 2020年中国透明聚丙烯(TPP)行业概况:仍有较大市场空间 [图]
  16. 前后端分离开发模式介绍
  17. IE8 使用 Oracle ERP
  18. android水果购物车,实现购物车功能
  19. Python 从入门到爬虫极简教程
  20. k8s集群-master节点迁移

热门文章

  1. C++学习笔记-利用rapidJSON读取JSON数据
  2. mysql面试吗hi提_面试必备的10道MySQL题
  3. transporter上传卡正在交付_Xcode11,Transporter上传卡在——正在验证 APP - 正在通过App Store进行认证...
  4. button点击后变色_汽车改色膜新潮流,2021年流行渐变色
  5. 计算机网络之物理层:2、码元、速率、带宽、波特
  6. (王道408考研数据结构)第七章查找-第二节2:二分查找及其判定树
  7. c++程序设计中虚基类,多继承知识点
  8. ERROR: Process pool report error: Can‘t pickle
  9. shell 获取字符串前两个字符串、获取字符串最后一个字符、去掉字符串最后一个字符、去掉末尾一个字符、去掉末尾两个字符
  10. Python 抛异常处理(精)