ASP.NET Core Web API 控制器与方法返回输出
2021-01-16 09:15
标签:一点 请求 wro returns json detail intern name manage DATA ACCESS LAYER 在一些不同的示例教程中,我们可能看到 DAL 的实现在主项目中,并且每个控制器中都有实例。我们不建议这么做。 当我们编写 DAL 时,我们应该将其作为一个独立的服务来创建。在 .NET Core 项目中,这一点很重要,因为当我们将 DAL 作为一个独立的服务时,我们就可以将其直接注入到 IOC(控制反转)容器中。IOC 是 .NET Core 内置功能。通过这种方式,我们可以在任何控制器中通过构造函数注入的方式来使用。 CONTROLLERS 控制器应该始终尽量保持整洁。我们不应该将任何业务逻辑放置于内。 因此,我们的控制器应该通过构造函数注入的方式接收服务实例,并组织 HTTP 的操作方法(GET,POST,PUT,DELETE,PATCH...): 我们的 Action 应该尽量保持简洁,它们的职责应该包括处理 HTTP 请求,验证模型,捕捉异常和返回响应。 在大多数情况下,我们的 action 应该将 使用最多的方法是: OK => returns the 200 status code NotFound => returns the 404 status code BadRequest => returns the 400 status code NoContent => returns the 204 status code Created, CreatedAtRoute, CreatedAtAction => returns the 201 status code Unauthorized => returns the 401 status code Forbid => returns the 403 status code StatusCode => returns the status code we provide as input ASP.NET Core Web API 控制器与方法返回输出 标签:一点 请求 wro returns json detail intern name manage 原文地址:https://www.cnblogs.com/jcsoft/p/12222527.html
public class OwnerController: Controller
{
private IRepository _repository;
public OwnerController(IRepository repository)
{
_repository = repository;
}
}
public class OwnerController : Controller
{
private readonly ILoggerManager _logger;
private readonly IRepository _repository;
public OwnerController(ILoggerManager logger, IRepository repository)
{
_logger = logger;
_repository = repository;
}
[HttpGet]
public IActionResult GetAllOwners()
{
}
[HttpGet("{id}", Name = "OwnerById")]
public IActionResult GetOwnerById(Guid id)
{
}
[HttpGet("{id}/account")]
public IActionResult GetOwnerWithDetails(Guid id)
{
}
[HttpPost]
public IActionResult CreateOwner([FromBody]Owner owner)
{
}
[HttpPut("{id}")]
public IActionResult UpdateOwner(Guid id, [FromBody]Owner owner)
{
}
[HttpDelete("{id}")]
public IActionResult DeleteOwner(Guid id)
{
}
}
[HttpPost]
public IActionResult CreateOwner([FromBody]Owner owner)
{
try
{
if (owner.IsObjectNull())
{
return BadRequest("Owner object is null");
}
if (!ModelState.IsValid)
{
return BadRequest("Invalid model object");
}
_repository.Owner.CreateOwner(owner);
return CreatedAtRoute("OwnerById", new { id = owner.Id }, owner);
}
catch (Exception ex)
{
_logger.LogError($"Something went wrong inside the CreateOwner action: { ex} ");
return StatusCode(500, "Internal server error");
}
}
IActonResult
作为返回类型(有时我们希望返回一个特定类型或者是 JsonResult
...)。通过使用这种方式,我们可以很好地使用 .NET Core 中内置方法的返回值和状态码。
文章标题:ASP.NET Core Web API 控制器与方法返回输出
文章链接:http://soscw.com/index.php/essay/42656.html