Docker를 사용한 React 및 .NET Core 6.0 샘플 프로젝트 - 1부
이 게시물의 섹션은 다음과 같습니다.
웹 API 프로젝트 만들기
모델 추가
데이터베이스 컨텍스트 추가
마이그레이션으로 데이터베이스 생성
API 컨트롤러 및 메서드 만들기
컴퓨터에 다음 도구가 설치되어 있어야 합니다.
비주얼 스튜디오 2022
.NET 6.0 SDK
마이크로소프트 SQL 서버 익스프레스
우편 집배원
준비가 되었다면 시작하겠습니다.
ASP.NET Core 웹 API 프로젝트 만들기
Visual Studio -> 새 프로젝트 -> ASP.NET Core 웹 API를 엽니다.
아래 NuGet 패키지 설치
모델 추가
이제 데이터 모델 클래스를 구현할 것입니다.
솔루션 탐색기에서 프로젝트를 마우스 오른쪽 단추로 클릭합니다. 추가 -> 새 폴더를 선택하고 폴더 이름을 Models로 지정합니다.
그런 다음 Models 폴더를 마우스 오른쪽 버튼으로 클릭하고 추가->클래스를 선택합니다. 클래스 이름을 Movie.cs로 지정하고 추가를 클릭합니다.
다음으로 클래스에 다음 속성을 추가합니다.
namespace MoviesAPI.Models
{
public class Movie
{
public int Id { get; set; }
public string? Title { get; set; }
public string? MovieLanguage { get; set; }
public int ReleaseYear { get; set; }
public string? OTT { get; set; }
}
}
데이터베이스 컨텍스트 추가
이제 Models 폴더를 마우스 오른쪽 버튼으로 클릭하고 추가 -> 클래스를 선택합니다. 클래스 이름을 MovieContext로 지정하고 추가를 클릭합니다. 그런 다음 클래스에 다음 코드를 추가합니다.
using Microsoft.EntityFrameworkCore;
namespace MoviesAPI.Models
{
public class MovieContext:DbContext
{
public MovieContext(DbContextOptions<MovieContext> options):base(options)
{
}
public DbSet<Movie> MoviesList { get; set; } = null!;
}
}
이제 appsetting.json을 업데이트하여 연결 문자열을 구성합니다.
"ConnectionStrings": {
"MovieConnection": "Data Source=ServerName;Initial Catalog=Movies;Integrated Security=true"
}
이제 내장 IOC 컨테이너에 데이터베이스 컨텍스트를 등록합니다. Program.cs에 다음 코드를 추가합니다.
마이그레이션으로 데이터베이스 생성
이제 EF Core 마이그레이션 기능을 사용하여 데이터베이스를 생성합니다.
도구 -> NuGet 패키지 관리자 > 패키지 관리자 콘솔을 열고 PMC에서 다음 명령을 실행합니다.
Add-Migration Initial
명령을 실행하면 마이그레이션 폴더 아래에 마이그레이션 파일이 생성됩니다.
다음 단계로 PMC에서 다음 명령을 실행합니다.
Update-Database
아래와 같이 새로 생성된 데이터베이스가 표시됩니다.
API 컨트롤러 및 메서드 만들기
영화 API 컨트롤러를 추가하고 CRUD 메서드를 테스트해 보겠습니다.
Controller 폴더를 마우스 오른쪽 버튼으로 클릭하고 Add -> Controller..를 선택한 다음 아래와 같이 API Controller - Empty를 선택합니다.
이름 : MoviesController.cs
MoviesContoller 파일에 다음 코드를 추가합니다. 그러면 컨트롤러 생성자를 통해 데이터베이스 컨텍스트가 주입됩니다.
private readonly MovieContext _movieContext;
public MoviesController(MovieContext movieContext)
{
_movieContext = movieContext;
}
이제 컨트롤러에 CRUD(생성, 읽기, 업데이트 및 삭제) 작업 메서드를 추가합니다. POST 메서드부터 시작하겠습니다.
POST 방법:
MoviesController.cs에 다음 코드를 추가합니다.
[HttpPost]
public async Task<ActionResult<Movie>> AddMovie(Movie movie)
{
if (_movieContext == null)
{
return NotFound();
}
_movieContext.MoviesList.Add(movie);
await _movieContext.SaveChangesAsync();
return movie;
}
개발자 PowerShell 또는 명령 프롬프트로 이동하여 아래 명령을 실행하여 POST 메서드를 테스트합니다.
dotnet build
dotnet run
Postman으로 이동하여 새 Http 요청 생성 및 POST 메서드를 실행합니다.
http://localhost:<portnumber>/api/movies
이제 SSMS로 이동하여 아래를 실행하여 추가된 동영상을 확인합니다.
마찬가지로 POST 메서드를 실행하여 데이터베이스에 영화를 몇 개 더 추가합니다.
GET 방법:
MoviesController.cs에 다음 코드를 추가합니다.
//GET : api/movies
[HttpGet]
public async Task<ActionResult<IEnumerable<Movie>>> GetMovies()
{
if(_movieContext == null)
{
return NotFound();
}
return await _movieContext.MoviesList.ToListAsync();
}
//GET : api/movies/id
[HttpGet("{id}")]
public async Task<ActionResult<Movie>> GetMovies(int id)
{
if (_movieContext == null)
{
return NotFound();
}
var movie = await _movieContext.MoviesList.FindAsync(id);
if (movie == null)
{
return NotFound();
}
return movie;
}
다음과 같이 Postman에서 두 엔드포인트를 호출하여 애플리케이션을 테스트할 수 있습니다.
https://localhost:{port}/api/movies
https://localhost:{port}/api/movies/{id}
업데이트 방법:
MoviesController에 다음 코드를 추가합니다.
[HttpPut("{id}")]
public async Task<ActionResult<Movie>> UpdateMovie(int id, Movie movie)
{
if (movie.Id != id)
{
return BadRequest();
}
_movieContext.Entry(movie).State = EntityState.Modified;
await _movieContext.SaveChangesAsync();
var updatedMovie = _movieContext.MoviesList.FirstOrDefaultAsync(x => x.Id == id);
return movie;
}
Postman을 사용하여 Update 메서드를 테스트하여 값을 업데이트합니다.
삭제 방법:
MoviesController.cs에 다음 코드를 추가합니다.
[HttpDelete("{id}")]
public async Task<IActionResult> DeleteMovie(int id)
{
var movie = await _movieContext.MoviesList.FindAsync(id);
if (movie == null) return NotFound();
_movieContext.MoviesList.Remove(movie);
await _movieContext.SaveChangesAsync();
return NoContent();
}
Postman에서 다음 명령을 실행하여 Delete 메서드를 테스트합니다.
다음 부분에서 docker 파일을 사용하여 이 애플리케이션을 계속 실행할 것입니다. 여기에서 전체 프로젝트를 찾을 수 있습니다GitHub repository.
Reference
이 문제에 관하여(Docker를 사용한 React 및 .NET Core 6.0 샘플 프로젝트 - 1부), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/jayavardhan5555/react-and-net-core-60-sample-project-with-docker-part-1-562i텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)