[오늘의 배움] 042 MVC, 엔드포인트

이상민·2021년 2월 7일
0

[오늘의 배움]

목록 보기
45/70
post-thumbnail

1. MVC 모델

1-1. 아키텍처 스타일

  • 개발자 각자의 스타일대로 만들어진 아키텍처는 유지보수가 어려움
  • 개발자들의 경험 누적으로 검증된 보편적인 아키텍처 스타일 등장

장점

  • 시행착오를 줄여 고품질 SW 생산
  • 구축 전 시스템 시뮬레이션 가능
  • 시스템에 대한 빠른 이해
  • 수월한 의사소통
  • 용이한 유지보수
  • 검증된 아키텍처에 대한 검증된 라이브러리 지원

1-2. MVC 모델

  • 세 개의 서브 시스템(model, view, controller)으로 구성된 중앙 데이터 구조
  • UI로부터 비즈니스 로직을 분리해 서로 영향 없이 쉽게 유지보수할 수 있음
  • 컨트롤러는 모델과 뷰의 가교 역할

  • 모델 : 데이터, 로직, 룰 관리
  • 뷰 : 정보를 표현
  • 컨트롤 : 입력을 받아 모델 또는 뷰로 명령 전달

비즈니스 로직 : 프로그램 코드 중 업무에 필요한 데이터를 생성/표시/저장/변경하는 부분

1-3. 웹과 MVC

  • 원래 GUI를 위해 개발된 패턴이지만, 웹 어플리케이션에 널리 사용되게 됨
  • 프레임워크마다 어느 부분을 클라이언트 또는 서버에 놓을지 구분은 상이함
  • UI와 로직/데이터의 구분으로 개발자-퍼블리셔(디자이너)간 협업이 원활해짐

  1. 사용자가 웹사이트에 접속 (USES)
  2. Controller는 사용자가 요청한 웹페이지를 서비스하기 위해 모델 호출 (MANIPULATES)
  3. 모델은 데이터베이스나 파일 등 데이터 소스 제어 후 결과 반환
  4. Controller는 Model이 반환한 결과를 View에 반영 (UPDATES)
  5. 데이터가 반영된 View는 사용자에게 표시 (Sees)

2. 엔드포인트

API 서버가 제공하는 통신 채널 혹은 접점

  • 클라이언트가 백엔드 API 서버와 통신할 때 엔드포인트에 접속하는 형태로 통신
  • 각 엔드포인트는 고유 URL을 가지며 이를 통해 엔드포인트에 접속
  • 일반적으로 각 엔드포인트는 고유 기능 담당
  • 엔드포인트들이 모여 하나의 API를 구성

2-1. ping 엔드포인트

단순히 "pong" 문자열을 반환하는 엔드포인트 = 헬스 체크 엔드포인트

  • API 서버가 현재 운행 여부를 확인할 때 사용
from flask import Flask

app = Flask(__name__)


@app.route("/ping", methods=['GET']  # 엔드포인트를 등록할때 사용하는 데코레이터
def ping():  # route()을 통해 엔드포인트로 등록
	return "pong"
  • ping 엔드포인트를 구현하는 ping 함수에서 "pong"을 반환하면
    Flask가 HTTP 응답으로 변환하여 요청을 보낸 클라이언트에 전송
profile
편하게 읽기 좋은 단위의 포스트를 추구하는 개발자입니다

0개의 댓글