ASP.NET Core Restfull API 및 postman 호출 with visual studio 2022

김경민·2022년 6월 13일
1

A. 웹 프로젝트 만들기

  • 파일 메뉴에서 새로 만들기>프로젝트를 선택합니다.
  • 검색 상자에 Web API를 입력합니다.
  • ASP.NET Core Web API 템플릿을 선택하고 다음을 선택합니다.
  • 새 프로젝트 대화 상자 구성에서 TodoApi 프로젝트 이름을 지정하고 다음을 선택합니다.
  • 추가 정보 대화 상자에서 다음을 수행합니다.
  • 프레임워크가 .Net 6.0(장기 지원)인지 확인합니다.
  • 컨트롤러 사용(최소 API를 사용하려면 선택 취소) 확인란을 선택합니다.
  • 만들기를 선택합니다.

B. launchUrl 업데이트

Properties\launchSettings.json에서 launchUrl을 "swagger"에서 "api/todoitems"로 업데이트합니다.

"launchUrl": "api/todoitems",
// Properties/launchSettings.json
// http 8080 으로 변경
{
  "$schema": "https://json.schemastore.org/launchsettings.json",
  "iisSettings": {
    "windowsAuthentication": false,
    "anonymousAuthentication": true,
    "iisExpress": {
      "applicationUrl": "http://localhost:8080",
      "sslPort": 0
    }
  },
  "profiles": {
    "WebApplication1": {
      "commandName": "Project",
      "launchBrowser": true,
      "launchUrl": "api/todoitems",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      },
      "applicationUrl": "http://localhost:8080",
      "dotnetRunMessages": true
    },
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "launchUrl": "api/todoitems",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    }
  }
}

C. 모델 클래스 추가

  • 솔루션 탐색기에서 프로젝트를 마우스 오른쪽 단추로 클릭합니다. 추가>새 폴더를 선택합니다. 폴더 이름을 Models서 무료 평가판 계정을 등록할 수 있습니다.
  • Models 폴더를 마우스 오른쪽 단추로 클릭하고 추가>클래스를 선택합니다. 클래스 이름을 TodoItem으로 지정하고 추가를 선택합니다.
  • 템플릿 코드를 다음으로 바꿉니다.
namespace TodoApi.Models
{
    public class TodoItem
    {
        public long Id { get; set; }
        public string? Name { get; set; }
        public bool IsComplete { get; set; }
    }
}

D. 데이터베이스 컨텍스트 추가

NuGet 패키지 추가

  • 도구 메뉴에서 NuGet 패키지 관리자 > 솔루션용 NuGet 패키지 관리를 선택합니다.
  • 찾아보기 탭을 선택한 다음, 검색 상자에 Microsoft.EntityFrameworkCore.InMemory를 입력합니다.
  • 왼쪽 창에서 Microsoft.EntityFrameworkCore.InMemory를 선택합니다.
  • 오른쪽 창에서 프로젝트 확인란을 선택하고 설치를 선택합니다.

TodoContext 데이터베이스 컨텍스트 추가

  • Models 폴더를 마우스 오른쪽 단추로 클릭하고 추가>클래스를 선택합니다. 클래스 이름을 TodoContext로 지정하고 추가를 클릭합니다.
using Microsoft.EntityFrameworkCore;
using System.Diagnostics.CodeAnalysis;

namespace TodoApi.Models
{
    public class TodoContext : DbContext
    {
        public TodoContext(DbContextOptions<TodoContext> options)
            : base(options)
        {
        }

        public DbSet<TodoItem> TodoItems { get; set; } = null!;
    }
}

E. 데이터베이스 컨텍스트 등록

Program.cs

using Microsoft.EntityFrameworkCore;
using TodoApi.Models;


var builder = WebApplication.CreateBuilder(args);

// Add services to the container.

builder.Services.AddControllers();
builder.Services.AddDbContext<TodoContext>(opt =>
    opt.UseInMemoryDatabase("TodoList"));
//builder.Services.AddSwaggerGen(c =>
//{
//    c.SwaggerDoc("v1", new() { Title = "TodoApi", Version = "v1" });
//});

var app = builder.Build();

// Configure the HTTP request pipeline.
if (builder.Environment.IsDevelopment())
{
    app.UseDeveloperExceptionPage();
    //app.UseSwagger();
    //app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "TodoApi v1"));
}

app.UseHttpsRedirection();

app.UseAuthorization();

app.MapControllers();

app.Run();

F. 컨트롤러 스캐폴드, 자동으로 샘플 CRUD를 생성해줌

  • Controllers 폴더를 마우스 오른쪽 단추로 클릭합니다.

  • 추가>스캐폴드 항목 새로 만들기를 선택합니다.

  • Entity Framework를 사용하며 동작이 포함된 API 컨트롤러를 선택하고 추가를 선택합니다.

  • Entity Framework를 사용하며 동작이 포함된 API 컨트롤러 추가 대화 상자에서:

  • 모델 클래스에서 TodoItem(TodoApi.Models) 을 선택합니다.

  • 데이터 컨텍스트 클래스에서 TodoContext(TodoApi.Models) 를 선택합니다.

  • 추가를 선택합니다.

  • 스캐폴딩 작업이 실패하는 경우 추가를 선택하여 스캐폴딩을 다시 시도합니다.

G. PostTodoItem 만들기 메서드 업데이트

// nameof 연산자를 사용하도록 PostTodoItem의 return 문을 업데이트합니다.

[HttpPost]
public async Task<ActionResult<TodoItem>> PostTodoItem(TodoItem todoItem)
{
    _context.TodoItems.Add(todoItem);
    await _context.SaveChangesAsync();

    //return CreatedAtAction("GetTodoItem", new { id = todoItem.Id }, todoItem);
    return CreatedAtAction(nameof(GetTodoItem), new { id = todoItem.Id }, todoItem);
}

H. http-repl 설치

// http-repl을 사용하여 웹 API를 테스트합니다.
// 명령 프롬프트에서 다음 명령을 실행합니다.

dotnet tool install -g Microsoft.dotnet-httprepl

I. PostTodoItem 테스트

httprepl http://localhost:8080/api/todoitems
post -h Content-Type=application/json -c "{"name":"walk dog","isComplete":true}"

J. Postman POST 호출

K. Postman GET 호출

ASP.NET Core를 사용하여 웹 API 만들기

0개의 댓글