웹 서버/ASP.NET Core 둘러보기
WebAPI
코다람쥐
2022. 4. 25. 11:06
1. WebAPI 분석
웹 API는 M, C는 있지만 V는 없는 패턴이다.
V : HTML형식으로 UI를 그려줌
UI를 없애는 이유는 UI가 그릴필요가 없는 경우가 있기 때문이다. 예를들어, 서버에서 유니티로 데이터를 전송하는 경우에 HTML로 UI를 그리는게 아니고 유니티 내에서 UI를 그리는 경우가 있다. 이런 경우에 HTML로 UI를 그리는 것은 불필요하기 때문에 없애주는 것이다. 결국 데이터만 보내주고 View는 알아서 그리라는 것이다.
2. WebAPI 구현
HelloMessage.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace HelloEmpty.Models
{
public class HelloMessage
{
public string Message { get; set; }
}
}
ValuesControllers.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using HelloEmpty.Models;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
namespace HelloEmpty.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class ValuesController : ControllerBase
{
[HttpGet]
public List<HelloMessage> Get()
{
List<HelloMessage> message = new List<HelloMessage>();
message.Add(new HelloMessage() { Message = "Hello WebAPI 1" });
message.Add(new HelloMessage() { Message = "Hello WebAPI 2" });
message.Add(new HelloMessage() { Message = "Hello WebAPI 3" });
return message;
}
}
}
Startup.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
namespace HelloEmpty
{
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers(); // 이 부분을 작성
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers(); // 이 부분을 작성
});
}
}
}
실행결과1.
처음에는 웹 페이지를 찾을 수 없다고 뜰 것이다. 이것은 주소를 제대로 입력을 안해줘서 그렇다.
ValuesControllers.cs를 보면
[Route("api/[controller]")]
이렇게 경로를 표시해주는 라우트가 있는데 웹 주소에 "/api/Values"라고 적어주면된다.
[controller]부분은 ValuesControllers에서의 Controllers의 앞부분인 Values이다.
실행결과2. 웹 주소에 "/api/Values" 입력.
웹 페이지를 자세히보면 MVC와 Razor Page와는 다르게 무언가 다른 형식임을 알 수 있다.
이것은 ValuesControllers.cs의 List형식의 코드를 JSON형식의 데이터로 출력한 것이다.
이처럼 데이터만 보내주는 것을 확인할 수 있었고 UI는 데이터를 받는쪽(예를들어, 유니티)에서 이 데이터들을 활용하여 알아서 그리도록 처리하는 패턴이 WebAPI이다.