C# RESTful服务返回带有消息的HTTP响应

C# RESTful服务返回带有消息的HTTP响应,c#,asp.net-mvc,rest,asp.net-web-api,asp.net-core,C#,Asp.net Mvc,Rest,Asp.net Web Api,Asp.net Core,如何利用aspnet core上REST服务中的HTTP状态代码?最终,如果出现问题,甚至会包含一条消息 例如: [HttpGet] public async Task<MyModel> Get(int id) { if (id == 0) return new HttpResponseMessage(HttpStatusCode.BadRequest); ... } [HttpGet] 公共异

如何利用aspnet core上REST服务中的HTTP状态代码?最终,如果出现问题,甚至会包含一条消息

例如:

    [HttpGet]
    public async Task<MyModel> Get(int id)
    {
        if (id == 0)
            return new HttpResponseMessage(HttpStatusCode.BadRequest);
        ...
    }
[HttpGet]
公共异步任务Get(int-id)
{
如果(id==0)
返回新的HttpResponseMessage(HttpStatusCode.BadRequest);
...
}
此代码显然返回错误
无法将类型“System.Net.Http.HttpResponseMessage”隐式转换为“MyModel”


一种解决方案是总是向
MyModel
返回一个HTTP200和一些额外的属性,如
Status
Success
Message
,但这会破坏RESTful的目的。

返回
任务而不是
任务

[HttpGet]
公共异步任务获取(字符串id)
{
如果(id==0)返回BadRequest();
// ...
返回Ok(型号);
}

有许多控制器帮助器方法(请参阅),例如
BadRequest()
Ok()
NotFound()
Created()
,等等。这些映射到您期望的HTTP响应代码。

返回
任务
,而不是返回
任务

[HttpGet]
公共异步任务获取(字符串id)
{
如果(id==0)返回BadRequest();
// ...
返回Ok(型号);
}

有许多控制器帮助器方法(请参阅),例如
BadRequest()
Ok()
NotFound()
Created()
,等等。这些映射到您期望的HTTP响应代码。

您可以使用
Ok
BadRequest
方法。您可以使用
任务
作为返回类型

[HttpGet]
public async Task<ObjectResult> Get(int id)
{
   if(id==0)
      return BadRequest(new {Messagae = "Something is not correctT"});
   var result = await GetSomeMyModelObject();

   return Ok(result);
}

您可以使用
Ok
BadRequest
方法。您可以使用
任务
作为返回类型

[HttpGet]
public async Task<ObjectResult> Get(int id)
{
   if(id==0)
      return BadRequest(new {Messagae = "Something is not correctT"});
   var result = await GetSomeMyModelObject();

   return Ok(result);
}

相反,这对我起了作用

 return BadRequest("Something is not correct");

相反,这对我起了作用

 return BadRequest("Something is not correct");

@EdwinvanVliet这就是
Ok(model)
为您所做的:@EdwinvanVliet这就是
Ok(model)
为您所做的: