더북(TheBook)

33.4.4 따라하기 3: JSON을 반환하는 Web API 생성

1. Controllers 폴더에 ApiHelloWorldWithValueController.cs라는 이름으로 Web API 컨트롤러 클래스를 생성한다.

2. ApiHelloWorldWithValueController.cs 파일에 다음과 같이 코드를 작성한다. 만약 단순한 문자열 배열이 아니라 JSON 형태로 값을 반환하고자 한다면 Web API의 반환값으로 string 배열이 아닌 특정 타입으로 반환하면 된다. 예를 들어 다음 코드와 같이 새로운 Web API를 생성하고, 새로 Value 타입을 만들어 이 타입으로 값을 반환시켜 보는 코드를 작성하면 된다.

▼  ApiHelloWorld/Controllers/ApiHelloWorldWithValueController.cs

using System.Collections.Generic;
using Microsoft.AspNetCore.Mvc;
using System.ComponentModel.DataAnnotations;

namespace ApiHelloWorld.Controllers
{
    [Route(“api/[controller]”)]
  public class ApiHelloWorldWithValueController : Controller
  {
        [HttpGet]
      public IEnumerable<Value> Get()
      {
          return new Value[] {
              new Value { Id = 1, Text = “안녕하세요” },
              new Value { Id = 2, Text = “반갑습니다” },
              new Value { Id = 3, Text = “또 만나요” }
          };
      }

        [HttpGet(“{id:int}“)]
      public Value Get(int id)
      {
          return new Value { Id = id, Text = $“넘어온 값: {id}” };
      }

        [HttpPost]
        [Produces(“application/json”, Type = typeof(Value))]
        [Consumes(“application/json”)]
      public IActionResult Post([FromBody]Value value)
      {
          // 모델 유효성 검사
          if (!ModelState.IsValid)
          {
              return BadRequest(ModelState); // 400 에러 출력
          }
          return CreatedAtAction(“Get”, new { id = value.Id }, value); // 201
      }
  
  }
  
  // 모델 유효성 검사
  public class Value
  {
      public int Id { get; set; }
        [Required(ErrorMessage = “Text 속성은 필수입력값입니다.”)]
      public string Text { get; set; }
  }
}

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