백엔드
REST API
백엔드 입장에서 클라이언트란?
1) 사용자 → 프론트엔드
2) 프론트엔드 (에서 요청 가능)
웹서버 (프론트엔드 화면과 정적 페이지에 대한 걸 뿌려줌)
정적 페이지에 대응 (연혁, 소개 등) 내용/데이터의 변동이 없는 페이지
웹 어플리케이션 서버 + DB (백엔드)
동적 페이지 대응 내용/ 데이터의 변동이 있는 페이지. 데이터 처리/연산을 통해 화면의 내용, 데이터가 변하는 페이지. (자동으로 업데이트 해주는 페이지)
API (Application programming Interface)
Interface
- 중간에서 양쪽에 있는 친구들을 중재/매개체가 되어주는 역할.
GUI(Graphic User Interface)
- 그래픽을 사용해서 컴퓨터(프로그램)에 명령 내리는 방식.
CLI (Command Line Interface)
- 명령어 문장을 사용해 컴퓨터(프로그램)에 명령 내리는 방식.
REST API
- HTTP규약을 잘 따른 API
- 인터넷 속 공간(웹)을 활용하기 위해 지켜야 하는 규약(약속)=HTTP
- 형식 따르면 효율 굳
- HTTP 응답 코드
-
503 Service Unavailable: 웹 서버에 너무 많은 요청이 몰리거나 웹 서버에 부하가 걸려 응답하지 못할 때 (서버 과부화 상태)
→ 오늘 캐치테이블에서 겪은 에러.. ㅋㅋ (한 번에 5만명이 몰린..) 그러면 이때는 어떻게 해야 할까?
- 요청을 위해 기다려야 하는 시간, 번호를 나타낸다
- 이러면 사람들이 다시 요청을 보낼 일이 줄어든다. 왜냐? 다시 대기표를 받아 뒤로 밀리고 싶지 않기 때문! 캐치테이블에서 그저 예약 화면만 뜨고 무한 로딩만 떴기에 다들 누르기를 반복했을 것임.
- 서버의 성능을 테스트해본 뒤 파악한다.
- 요청을 위해 기다려야 하는 시간, 번호를 나타낸다
-
- 인터넷 속 공간(웹)을 활용하기 위해 지켜야 하는 규약(약속)=HTTP
- VS RESTFUL API
- HTTP규약을 매우 잘 따른 API
원칙
- 독립적인 클라이언트 -서버 상호작용
- REST API에서의 무상태 통신
- 서버는 클라이언트의 이전 세션에 대한 인증의 세부 정보를 저장하지 않음. 따라서 클라이언트는 모든 세션에 필요한 모든 정보를 제공해야 함.
- 캐싱으로 효율성 향상
- 균일한 인터페이스를 통한 예측 가능한 상호작용
- 확장성을 위한 계층화된 아키텍처 사용
규칙
- 대문자 x, 소문자 o
- 언더바 x , 하이픈 - o
- 마지막에 / 포함 불가
- 행위, 목적 포함 x
- 파일 확장자 포함 x
- 복수형으로 표현하면 좋은 것
- 상품들 중에 개별 id값을 가지는 데이터
- 통일감
API 설계 ( URL + Method )
- POST : 생성,등록
- GET : 조회
- id 개별 조회 products/{id} : id는 변수
- PUT : 덮어쓰기
- /products/{id}
- PATCH : 변경
- DELETE :삭제
- HEAD, OPTIONS, CONNECT, TRACE
API키
HTTP Protocol Template
-
body
1) 전달할 데이터/ 화면/ ..
2) 어떤 데이터 + 목적
URL( Uniform Resource Locator )
웹 페이지가 인터넷 상에 존재하는 주소 + 데이터 연산 요청을 위한 방법
http://컴퓨터주소:포트번호 : 컴퓨터 부르기
http://컴퓨터주소:포트번호/연산, 데이터 요청 :
직접 고쳐본 API… (화살표 오른쪽은 강사님의 아이디어)
product
all-product→products
all-product→products
💭전체 상품을 all을 넣으려고 했다가 복수형 추천한다고 했던걸 까먹…
쇼핑몰 메인 페이지 → 전체 상품 조회 API
https://www.ggsing.com/
전체 상품이 한눈에 보임.
https://www.ggsing.com/product/detail.html?product_no=59741
상품 번호 59741 조회.
- 상품 이름
- 간략 설명
- 배송비
- 색상
- 사이