23.05.31 Day84

오윤범·2023년 5월 31일
0

RESTAPI

MySQL의 내용을 RestAPI로

1) ASP.NET Core 웹 API로 프로젝트 생성

2) 프로젝트 생성 시 Docker 사용 제외 전부 체크

3) NuGet 패키지 관리

  • Microsoft.EntityFrameworkCore
  • Microsoft.EntityFrameworkCore.Tools
  • MySql.EntityFrameworkCore
  • Pomelo.EntityFrameworkCore.MySql

4) appsettings.json에 DefaultConnection(MySQL) 설정

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "AllowedHosts": "*",
  "ConnectionStrings": {
    "DefaultConnection": "server=localhost;port=3306;database=bookrentalshop;user=root;password=12345;"
  }
}

5) 도구 - 누겟패키지 관리자 - 패키지 관리자 콘솔 - 기본 프로젝트->현재 프로젝트

  • cd 프로젝트 경로
    (cd C:\Source\ASP.NET\Day11\TodoItemSolution\BookRentalShopAPI)
  • Scaffold-DbContext "appsettings.json에 작성한 DefaultConnection" -OutputDir Models
    (Scaffold-DbContext "server=localhost;port=3306;database=bookrentalshop;user=root;password=12345;" -OutputDir Models)
  • Provider: MySql.EntityFrameworkCore

5.5) Models 폴더 내부에 BookRentalShop의 모든 Table이 .cs파일로 생성됨을 확인

6) Models/BookrentalshopContext.cs의 28번째 행 Onfiguring 함수 전체 주석 처리

7) Program.cs 의 12번째 행 //Add services to the container. 하단 부분에 해당 소스 작성

builder.Services.AddDbContext<BookrentalshopContext>(options => options.UseMySql(
                builder.Configuration.GetConnectionString("DefaultConnection"),
                ServerVersion.AutoDetect(builder.Configuration.GetConnectionString("DefaultConnection"))
                ));

8) Controllers - 추가 - 컨트롤러 - 좌측 API - Entity Framework를 사용하며 동작이 포함된 API 컨트롤러 - 모델 클래스 : Bookstbl - DbContext 클래스 - BookrentalshopContext로 생성

9) 8번까지 수행 후 디버그

10) Bookstbls의 첫번째 GET / Try it out / Execute / Request URL에 명시되어있는 URL 주소창에 입력 후 json의 형태로 출력되는지 확인

11) 누겟 - Microsoft.EntityFrameworkCore 삭제

TodoAPIServer

1) Models 폴더 생성 - TodoItem 클래스 작성

using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

namespace TodoAPIServer.Models
{
    public class TodoItem
    {
        [Key]
        public int Id { get; set; }

        [Column(TypeName ="Varchar(100)")]
        public string? Title { get; set; }

        public DateTime TodoDate { get; set; }
        public bool? IsComplete { get; set; }
    }
}

2) appsettings.json 수정

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "AllowedHosts": "*",
  "ConnectionStrings": {
    "DefaultConnection": "server=localhost;port=3306;database=aspnet;user=root;password=12345;"
  }
}

3) Models/ApplicationDbContext.cs 작성(DB와 연결 Part)

4) Program.cs의 12번행 Add services to be the Container. 하단에 소스 삽입

builder.Services.AddDbContext<ApplicationDbContext>(options => options.UseMySql(
                builder.Configuration.GetConnectionString("DefaultConnection"),
                ServerVersion.AutoDetect(builder.Configuration.GetConnectionString("DefaultConnection"))
                ));

5) 도구 - 누겟 패키지 관리자 - 패키지 관리자 콘솔

Add-Migration AddTodoItemsToMySql
Update-Database

6) Controllers - TodoItemsControllers 컨트롤러 추가 - 좌측 API - Entity Framework를 사용하며 동작이 포함된 API 컨트롤러 - TodoItem / ApplicationDbContext

7) 실행 후 GET/POST/PUT/DELETE 수행

0개의 댓글