当前位置: 首页 > 知识库问答 >
问题:

从WebAPI 2endpoint返回自定义HTTP状态代码

章宏峻
2023-03-14

我正在处理WebAPI 2中的一个服务,endpoint当前返回一个<code>IHttpActionResult<code>。我想返回一个状态代码422,但由于它不在HttpStatusCode枚举中,我不知道如何发送它,因为所有构造函数都需要一个参数HttpStatusCode

目前,我正在返回<code>BadResult(消息),但返回<code>422

共有3个答案

丌官晨
2023-03-14

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

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
}});    

希望对你有帮助。

龚玄天
2023-03-14
 return Content((HttpStatusCode) 422, whatEver);

信用是:返回非OK响应的IHttpActionResult内容

并且您的代码必须是

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

步嘉德
2023-03-14

根据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")
                )
            );
        }
    }
}
 类似资料:
  • 我考虑在项目中使用fluent-http。 所以我尝试注入: 返回正确的字符串,但似乎没有使用状态代码。在这两种情况下,响应都有一个代码HTTP200。 注意:我发现一些状态代码是预先实现的: null

  • 在Spring MVC@RequestMapping注释中,我返回JSP页面名称作为结果。这将返回HTTP状态代码200OK。如何将此状态代码更改为创建的201? @ResponseStatus不起作用。另外,HttpServletResponse也不能工作,因为我只需要返回自定义JSP页面。

  • 我正在使用 格雷德尔: 控制器 验证器类 控制器建议 如果我从验证器中抛出customException,那么尽管我有相应的controllerAdvice, 总是,我收到400个坏的请求,因为我有一个controllerAdvice总是返回400。 我想在这里实现的是,有没有可能返回带有状态代码的customException或者有没有从Validator返回不同的状态代码?我在StackOve

  • 在Spring Boot控制器中,我使用检查用户是否登录(使用基本auth+)。 但是如果用户没有登录,即他们没有经过身份验证,控制器返回。 根据我对身份验证与授权的了解,用于身份验证,而用于授权。 根据我的理解,总是检查用户的授权(顾名思义),但是有什么方法可以根据我们传递给它的参数自定义它,即? 我知道还有另一种解决方案:在中使用基于URL的安全配置,但如果我不想这样做,该怎么办。 有什么想法

  • 问题内容: 我看到了一些类似的问题(像这样),但是没有一个问题专门解决这个问题。 因此,Google 现在支持SPA,并且大多数网络浏览器都支持HTML5 pushState 。 我的AngularJS(但可能是任何JS东西)网站都使用URL来确定API路由。然后执行API调用,然后相应地呈现内容。 但是,由于 每个URL都 返回HTTP 200状态代码(包括example.com/get-fre

  • 我试图为web api控制器中的GET方法返回一个状态代码304 not modified。 我成功的唯一方法是这样的: 这里的问题是,它并不是一个例外,它只是没有被修改,所以客户端缓存是可以的。我还希望返回类型为User(正如所有web api示例使用GET显示的那样),而不是返回HttpResponseMessage或类似的内容。