Skip to content

jinwoo-lee-github/edu_Learn_ASPNetCore_APIServer

 
 

Repository files navigation

ASP.Net Core Web API Server 학습


1. 학습하기

직접 예제 코드를 만들어 보면서 학습을 잘하자

Redis 프로그래밍

MySQL 프로그래밍

2022년 인턴 사원이 만든 학습 자료

학습자료_2022년_인턴 이라는 디렉토리에 2022년 인턴 사원으로 근무한 분이 만든 학습 자료가 있다.
이 자료들을 순서대로 한번 보기 바란다.
이것들을 본 후 실습을 하나씩 한다. 03_Dapper, 06연습 프로젝트 구현은 따라서 실습을 할 필요는 없다. 그냥 보기만 한다.

학습에서는 데이터 베이스 프로그래밍으로 Dapper를 사용하고 있는데 실제 실습에서는 SqlKata를 사용한다
SqlKata 소개
demo 프로그램 codes 디렉토리에 있는 github_sqlkata_demo.zip 파일이다.

서버 캠퍼스 1기 수료생 정리 자료

서버 캠퍼스 1기 수료생 정리 자료

학습자료_2024_서버캠퍼스2기 디렉토리를 보기 바란다

문서



2. 실습

아래 프로그램은 codes 디렉토리의 basic 디렉토리 안에 있다.

basic_01

ASP.NET Core Web API 기본 템플릿으로 만든 프로그램이다
Get 메소드로 http://localhost:5000/WeatherForecast를 호출하면 Json 데이터를 받을 수 있다.


basic_02

보통 API 서버에 요청을 할 때 Post 메소드로 Json 포맷으로 요청하고, Josn 포맷으로 응답을 받는다. 로그인 요청을 가정한 아주 간단한 컨트룰러를 하나 만들어서 이 동작을 시연한다.

실제 API 서버를 운용할 때는 앞단에 로드밸런스를 두고, 여기서 HTTPS 처리를 하게 하면 되므로 HTTP 프로토콜은 사용하지 않도록 하였다.

요청은 아래와 같다.

POST http://localhost:11500/Login
Content-Type: application/json

{
  "ID":"jacking",
  "PW":"dsd"
}

basic_03

MySQL과 Redis를 사용하여 계정 생성과 로그인 처리를 한다.
라이브러리: MySQL(Sqlkata), Redis(CloudStructures)

DataBase 이름은 account_db, 테이블 이름은 account 이다.

CREATE TABLE IF NOT EXISTS account_db.`account`
(
    AccountId BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT '계정번호',
    Email VARCHAR(50) NOT NULL UNIQUE COMMENT '이메일',
    SaltValue VARCHAR(100) NOT NULL COMMENT  '암호화 값',
    HashedPassword VARCHAR(100) NOT NULL COMMENT '해싱된 비밀번호',
    CreatedAt DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '생성 날짜'
) COM    

아래는 요청

POST http://localhost:11500/Login
Content-Type: application/json

{
  "Email":"[email protected]",
  "Password":"123qwe"
}

basic_04

basic_03과 동일하지만 로거가 추가되었다.
ASP.NET Core에서 제공하는 로거를 설정해서 사용한다.
여기에서는 콘솔 출력만 하고 있다.


basic_05

basic_04과 동일하지만 로거를 표준에서 ZLogger로 변경하였다.
ZLogger를 오픈소스 라이브러리로 표준 로거 보다 더 고성능이다.
조금의 코드 변경으로 표준에서 ZLogger로 변경이 가능하다.


basic_06

미들웨어를 사용하고 있다.
이번 프로젝트는 구현을 다 하지 않고, 미들웨어를 사용하는 방법만 코드로 보여주고 있다.
이 샘플만으로는 미들웨어의 장점에 대해서 잘 이해시키기 힘들다.
설명이 필요하다.


basic_07

DI를 사용한다



API Server

  • 게임 서버를 개발할 때 사용할 기본 템플릿
  • 아래 프로그램은 codes 디렉토리의 net7 디렉토리 안에 있다.
    • 만약 닷넷 8 혹은 9가 나오면 거의 동일한 코드가 있는 net8, net9 디렉토리가 있을 것이다

example_filter_APIServer

  • 아래 프로그램은 codes 디렉토리 안에 있다.
  • 기획데이터(마스터 데이터)가 json으로 된 것을 로딩
  • 미들웨어로 라우팅을 커스텀마이징
  • 미들웨어로 클라이언트 보낸 요청 데이터의 암호를 풀어서 핸들러에 전달하도록 한다
  • 필터로 클라이언트에 보내는 응답의 포맷을 변환하거나 암호화 하도록 한다

gRPC Server


참고할 실습 프로젝트



C# 학습 자료

About

ASP.NET Core Web API 학습을 위한 저장소

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C# 99.8%
  • Dockerfile 0.2%