ASP.NETコントローラーで行うべきではない6つのこと

ASP.NETコントローラーは薄くする必要があります





ああ、この絶え間なく繰り返される礼儀は、控えめな表現で大きくなりすぎました。





なぜそれらは薄くなければならないのですか?プラスは何ですか?今そうでない場合、どうやって薄くするのですか?どうやっそれらを薄く保つのですか?





( ) . , .





, , .





, 6 , , . , , .





1. (DTO)

, , - , , HTTP.





, - :





public IActionResult CheckOutBook([FromBody]BookRequest bookRequest)
{
    var book = new Book();

    book.Title = bookRequest.Title;
    book.Rating = bookRequest.Rating.ToString();
    book.AuthorID = bookRequest.AuthorID;

    //...
}
      
      



, , . HTTP .





2.

, , . , .





, -. , . ASP.NET MVC, .





!





public IActionResult Register([FromBody]AutomobileRegistrationRequest request)
{
    // ,  VIN   ...
    if (string.IsNullOrEmpty(request.VIN))
    {
        return BadRequest();
    }
    
    //...
}
      
      



3. -

-, , - .





. , ( ), , .





4.

, . , , .





, ASP.NET ( , ).





User



  , / -, , , - .





5.

, !





public IActionResult GetBookById(int id)
{
    try
    {
      //  ,    -...
    }
    catch (DoesNotExistException)
    {
      // ,    ...
    }
    catch (Exception e)
    {
      // ,   ...
    }
}
      
      



, , , , , . , , - .





-, - . , , - .





6. /

, ,



. CRUD , , .





, .





, , , , .





( ). , , .





public IActionResult CheckOutBook(BookRequest request)
{
    var book = _bookRepository.GetBookByTitleAndAuthor(request.Title, request.Author);

    //        ,   
    //         
  	// ...

		return Ok(book);
}
      
      



CRUD , , , .





( ) - CQRS .





!


, , ? - ? ? !





"C# ASP.NET Core ".





, , , 5 .









UPD:

4 , , . « ?» « ?».





, , , , . , — HTTP . , HTTP , HTTP .





« , ?» « ?» — , , .








All Articles