이는 사전 구성된 간단한 ASP.NET Core 프로젝트로, 3계층 아키텍처를 기반으로 편안한 API를 구축하는 데 유리한 출발점을 제공하기 위해 채택되었습니다.
일부 기능을 보여주기 위해 이 프로젝트에는 Plantagoo라는 프로젝트 관리 애플리케이션의 최소한의 가상 구현이 함께 제공됩니다.
개인적으로 저는 지난 몇 달 동안 처음부터 ASP.NET Core API 프로젝트를 반복적으로 만들어 왔습니다. 기술이 빠르게 변화하고 발전하고 있다고 알려져 있지만, 앞으로도 이를 공유하고 참조하고 구축할 수 있도록 이 프로젝트를 만들고 게시해야겠다는 필요성을 느꼈습니다.
계층별로 클래스 라이브러리를 사용하는 3계층 아키텍처
일반 응답 객체를 반환하는 DI 기반 비동기 서비스
JWT 기반 인증 및 승인
PBKDF2 기반 해싱
미들웨어 기반 전역 오류 처리
Restful API 엔드포인트, DTO 및 HTTP 상태 코드 반환
객체 목록을 반환하는 API 엔드포인트에 대한 필터링, 페이징 및 정렬 구현
API 엔드포인트 버전 관리 구현
POCO 엔터티를 통한 Entity Framework Core 기반 데이터 액세스
AutoMapper 기반 객체 간 매핑 및 데이터베이스 쿼리 최적화
환경 기반 "appsettings.json" 파일, 비밀 및/또는 환경 변수를 통해 데이터베이스 연결 문자열 및 JWT 매개변수의 보안 중심 구성 가능
전용 데이터베이스의 설정, 시드 및 해체를 포함한 xUnit 기반 통합 테스트
이 프로젝트를 있는 그대로 실행하려면 다음 단계를 따르세요.
.NET 코어 3.1+ SDK
IDE(바람직하게는 Visual Studio 또는 Visual Studio Code)
MySQL 서버 8.0.20+
이 저장소 복제
루트 디렉터리에서 다음을 실행하여 필요한 패키지를 복원합니다.
dotnet restore
Plantagoo.API 프로젝트 내에서 appsettings.{environment}.json 파일을 열어 다음 연결 문자열을 필요에 맞게 사용자 정의합니다(자격 증명은 7단계 참조).
server=localhost;Port=3306;database=apiSkeletonDb
개발 목적으로 다음을 실행하여 비밀 저장소를 활성화합니다(환경 변수 작업에 익숙하다면 7단계로 빠르게 진행하세요).
dotnet user-secrets init
Windows를 사용하는 경우 %APPDATA%MicrosoftUserSecrets<user_secrets_id>secrets.json 파일로 이동하여 엽니다.
Linux/macOS를 사용하는 경우 ~/.microsoft/usersecrets/<user_secrets_id>/secrets.json 파일로 이동하여 엽니다.
이 secrets.json 파일 내에 다음 줄을 추가하여 JWT 매개변수를 설정하고 사용자 이름과 비밀번호를 추가하여 데이터베이스 연결 문자열을 확장합니다.
"TokenSettings:Secret": "…", "TokenSettings:AccessExpirationInMinutes": "…", "DB:Username": "…", "DB:Password": "…"
데이터베이스 생성에 대한 코드 우선 접근 방식의 경우 다음 명령을 실행합니다(현재 디렉터리가 Plantagoo.Data 인지 확인).
dotnet ef migrations add InitialCreate
다음은 다음과 같습니다.
dotnet ef database update
다음으로 다음을 실행하여 솔루션을 빌드합니다.
dotnet build
완료되면 다음을 실행하여 애플리케이션을 시작합니다.
dotnet run
API의 Swagger 문서를 보려면 브라우저에서 https://localhost:5001/swagger/index.html을 실행하세요.
.NET 코어 3.1
ASP.NET 코어 3.1
엔터티 프레임워크 코어 3.1
자동매퍼
스워시버클
x단위