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-Database6) Controllers - TodoItemsControllers 컨트롤러 추가 - 좌측 API - Entity Framework를 사용하며 동작이 포함된 API 컨트롤러 - TodoItem / ApplicationDbContext
7) 실행 후 GET/POST/PUT/DELETE 수행