text .net核心中的api控制器
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了text .net核心中的api控制器相关的知识,希望对你有一定的参考价值。
1. controller
namespace Angular_ASPNETCore_CustomersService.Apis
{
[Produces("application/json")]
[Route("api/[controller]")]
public class CustomersApiController : Controller
{
ICustomersRepository _CustomersRepository;
ILogger<CustomersApiController> _Logger;
public CustomersApiController(ICustomersRepository customersRepo, ILogger<CustomersApiController> logger) {
_CustomersRepository = customersRepo;
_Logger = logger;
}
// GET api/customers
[HttpGet]
[NoCache]
[ProducesResponseType(typeof(List<Customer>), 200)]
[ProducesResponseType(typeof(ApiResponse), 400)]
public async Task<ActionResult> Customers()
{
try
{
var customers = await _CustomersRepository.GetCustomersAsync();
return Ok(customers);
}
catch (Exception exp)
{
_Logger.LogError(exp.Message);
return BadRequest(new ApiResponse { Status = false });
}
}
// GET api/customers/page/10/10
[HttpGet("page/{skip}/{take}")]
[NoCache]
[ProducesResponseType(typeof(List<Customer>), 200)]
[ProducesResponseType(typeof(ApiResponse), 400)]
public async Task<ActionResult> CustomersPage(int skip, int take)
{
try
{
var pagingResult = await _CustomersRepository.GetCustomersPageAsync(skip, take);
Response.Headers.Add("X-InlineCount", pagingResult.TotalRecords.ToString());
return Ok(pagingResult.Records);
}
catch (Exception exp)
{
_Logger.LogError(exp.Message);
return BadRequest(new ApiResponse { Status = false });
}
}
// GET api/customers/5
[HttpGet("{id}", Name = "GetCustomerRoute")]
[NoCache]
[ProducesResponseType(typeof(Customer), 200)]
[ProducesResponseType(typeof(ApiResponse), 400)]
public async Task<ActionResult> Customers(int id)
{
try
{
var customer = await _CustomersRepository.GetCustomerAsync(id);
return Ok(customer);
}
catch (Exception exp)
{
_Logger.LogError(exp.Message);
return BadRequest(new ApiResponse { Status = false });
}
}
// POST api/customers
[HttpPost]
[ValidateAntiForgeryToken]
[ProducesResponseType(typeof(ApiResponse), 201)]
[ProducesResponseType(typeof(ApiResponse), 400)]
public async Task<ActionResult> CreateCustomer([FromBody]Customer customer)
{
if (!ModelState.IsValid)
{
return BadRequest(new ApiResponse { Status = false, ModelState = ModelState });
}
try
{
var newCustomer = await _CustomersRepository.InsertCustomerAsync(customer);
if (newCustomer == null)
{
return BadRequest(new ApiResponse { Status = false });
}
return CreatedAtRoute("GetCustomerRoute", new { id = newCustomer.Id },
new ApiResponse { Status = true, Customer = newCustomer });
}
catch (Exception exp)
{
_Logger.LogError(exp.Message);
return BadRequest(new ApiResponse { Status = false });
}
}
// PUT api/customers/5
[HttpPut("{id}")]
[ValidateAntiForgeryToken]
[ProducesResponseType(typeof(ApiResponse), 200)]
[ProducesResponseType(typeof(ApiResponse), 400)]
public async Task<ActionResult> UpdateCustomer(int id, [FromBody]Customer customer)
{
if (!ModelState.IsValid)
{
return BadRequest(new ApiResponse { Status = false, ModelState = ModelState });
}
try
{
var status = await _CustomersRepository.UpdateCustomerAsync(customer);
if (!status)
{
return BadRequest(new ApiResponse { Status = false });
}
return Ok(new ApiResponse { Status = true, Customer = customer });
}
catch (Exception exp)
{
_Logger.LogError(exp.Message);
return BadRequest(new ApiResponse { Status = false });
}
}
// DELETE api/customers/5
[HttpDelete("{id}")]
[ValidateAntiForgeryToken]
[ProducesResponseType(typeof(ApiResponse), 200)]
[ProducesResponseType(typeof(ApiResponse), 400)]
public async Task<ActionResult> DeleteCustomer(int id)
{
try
{
var status = await _CustomersRepository.DeleteCustomerAsync(id);
if (!status)
{
return BadRequest(new ApiResponse { Status = false });
}
return Ok(new ApiResponse { Status = true });
}
catch (Exception exp)
{
_Logger.LogError(exp.Message);
return BadRequest(new ApiResponse { Status = false });
}
}
}
}
2. api response model
public class ApiResponse
{
public bool Status { get; set; }
public Customer Customer { get; set; }
public ModelStateDictionary ModelState { get; set; }
}
以上是关于text .net核心中的api控制器的主要内容,如果未能解决你的问题,请参考以下文章
text 将文件从Angular发送到.net核心api控制器
使用 ASP.net 核心(API 控制器)处理基本控制器中的异常
模型绑定不适用于 asp.net 核心 Web api 控制器操作方法中的 Stream 类型参数。(即使使用自定义流输入格式化程序)
text 使用ASP.NET Core 2 Web API,Angular 5,.NET核心身份和Facebook登录进行JWT身份验证