33.6.2 따라하기

    1. ASP.NET Core 프로젝트인 DotNetNote 프로젝트를 열고, Controllers 폴더에 BoardSummary ApiController.cs라는 이름으로 클래스 파일을 생성한다.

    2. BoardSummaryApiController.cs 파일에 다음과 같이 코드를 입력한다.

    ▼  /Controllers/BoardSummaryApiController.cs

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using Microsoft.AspNetCore.Mvc;
    
    namespace DotNetNote.Controllers
    {
      // [1] 모델 클래스
      public class BoardSummaryModel
      {
          public int Id { get; set; }
          public string Alias { get; set; } // Notice, Free, Photo, …
          public string Title { get; set; }
          public string Name { get; set; }
          public DateTime PostDate { get; set; }
      }
      
      // [2] 리파지터리 클래스
      public class BoardSummaryRepository
      {
          public List<BoardSummaryModel> GetAll()
          {
              // 인 메모리 데이터베이스 => 실제 데이터베이스
              var lists = new List<BoardSummaryModel>() {
                  new BoardSummaryModel {
                      Id = 1, Alias = “Notice”, Name = “홍길동”,
                      Title = “공지사항입니다.”, PostDate = DateTime.Now },
                  new BoardSummaryModel {
                      Id = 2, Alias = “Free”, Name = “백두산”,
                      Title = “자유게시판입니다.”, PostDate = DateTime.Now },
                  new BoardSummaryModel {
                      Id = 3, Alias = “Photo”, Name = “임꺽정”,
                      Title = “사진게시판입니다.”, PostDate = DateTime.Now },
                  new BoardSummaryModel {
                      Id = 4, Alias = “Notice”, Name = “홍길동”,
                      Title = “공지사항입니다.”, PostDate = DateTime.Now }
              };
              
              return lists;
          }
          
          public List<BoardSummaryModel> GetByAlias(string alias)
          {
              return GetAll().Where(b => b.Alias == alias).ToList();
          }
      }
      
      // [3] Web API
        [Produces(“application/json”)]
        [Consumes(“application/json”)]
        [Route(“api/BoardSummaryApi”)]
      public class BoardSummaryApiController : Controller
      {
          private BoardSummaryRepository _repository;
          
          public BoardSummaryApiController()
          {
              _repository = new BoardSummaryRepository();
          }
    
            [HttpGet]
          public IEnumerable<BoardSummaryModel> Get()
          {
              return _repository.GetAll();
          }
    
            [HttpGet(“{alias}”, Name = “Get”)]
          public IEnumerable<BoardSummaryModel> Get(string alias)
          {
              return _repository.GetByAlias(alias);
          }
      }
      
      // [4] 컨트롤러
      public class BoardSummaryDemoController : Controller
      {
          public IActionResult Index()
          {
              string html = @”
    <div id=‘print’></div>
    <script src=‘https://code.jquery.com/jquery-2.2.4.min.js'></script>
    <script>
    $(function() {
        $.getJSON(‘/api/BoardSummaryApi’, function(data) {
            var str = ‘<dl>’;
    
            $.each(data, function (index, entry) {
                str += ‘<dt>’ + entry.title + ‘</dt><dd>’ + entry.name + ‘</dd>’;
            });
            
            str += ‘</dl>’;
            $(‘#print’).html(str);
        });
    });
    </script>
    ;
              ContentResult cr = new ContentResult() {
                  ContentType = “text/html”, Content = html };
              
              return cr;
          }
      }
    }
    

    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.