Web Api 控制器 接口 操作返回类型 BadRequest FromBody

教程:使用 ASP.NET Core 创建 Web API  
操作返回类型(ASP.NET Core Web API 中控制器操作的返回类型)  
响应数据格式(ASP.NET Core Web API 中响应数据的格式)  
Web API 2 的操作结果  
创建数据传输对象 (DTO)  
async 和 ASP.NET MVC    
*
*
1、IHttpActionResult => json()
Json(T content)
Ok()
Ok(T content)
NotFound()
Content(HttpStatusCode statusCode, T value)
BadRequest()
Redirect(string location)

[HttpGet]
public IHttpActionResult GetAllGrade()
{
    var result = Mapper.Map<List<GradeDto>>(_gradeRepo.GetList(x => x.Status != "D"));
    return Json(result);
}

2、HttpResponseMessage 直接转换成HTTP响应消息

public HttpResponseMessage Get()
{
    HttpResponseMessage response = Request.CreateResponse(HttpStatusCode .OK, "hello");
    response.Content = new StringContent ( "hello wep api", Encoding .Unicode);
    response.Headers.CacheControl = new CacheControlHeaderValue
    {
        MaxAge = TimeSpan .FromSeconds(600)
        };
    return response;
}

public Task<HttpResponseMessage> ExecuteAsync(CancellationToken cancellationToken)
{
    var response = new HttpResponseMessage()
    {
        Content = new StringContent(_value),
        RequestMessage = _request
    };
    return Task.FromResult(response);
}

*
3、其它类型
将序列化后的返回值写入响应的正文(Response Body),并且返回 HTTP 状态码 200(OK)
*
*
4、async Task

// GET api/Books/5
[ResponseType(typeof(BookDetailDTO))]
public async Task<IHttpActionResult> GetBook(int id)
{
    var book = await db.Books.Include(b => b.Author).Select(b =>
        new BookDetailDTO()
        {
            Id = b.Id,
            Title = b.Title,
            Year = b.Year,
            Price = b.Price,
            AuthorName = b.Author.Name,
            Genre = b.Genre
        }).SingleOrDefaultAsync(b => b.Id == id);
    if (book == null)
    {
        return NotFound();
    }

    return Ok(book);
}

public Task<HttpResponseMessage> ExecuteAsync(CancellationToken cancellationToken)
{
    var response = new HttpResponseMessage()
    {
        Content = new StringContent(_value),
        RequestMessage = _request
    };
    return Task.FromResult(response);
}

*
asp.net mvc

public async Task<ActionResult> Index()
{
    var departments = db.Departments.Include(d => d.Administrator);
    return View(await departments.ToListAsync());
}

public async Task<ActionResult> Details(int? id)
{
    if (id == null)
    {
        return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
    }
    Department department = await db.Departments.FindAsync(id);
    if (department == null)
    {
        return HttpNotFound();
    }
    return View(department);
}

*
*
*
5、ASP.NET Core 提供以下 Web API 控制器操作返回类型选项
● 特定类型:如 string,自定义对象类型, IEnumerable<T>,IAsyncEnumerable<T>
● IActionResult:当操作中可能有多个 ActionResult 返回类型时,适合使用 IActionResult 返回类型
● ActionResult<T>
*
*
-------------------------------------ASP.NET Core-------------------------------------
特定类型:最简单的操作返回基元或复杂数据类型(如 string 或自定义对象类型)
操作均为非阻止性:返回 IEnumerable<T> 或 IAsyncEnumerable<T>,自 ASP.NET Core 3.0 起,前面两个操作均为非阻止性。
IActionResult: BadRequestResult (400)、NotFoundResult (404) 和 OkObjectResult (200)。 
ActionResult<T>
同步操作
异步操作:  
*
ControllerBase 类  
下面是 ControllerBase 提供的方法的更多示例

*
绑定源参数推理  

*
*
*
*
*
7*
*
*
8、
*
0、

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值