[TIL-백엔드] 3주차 Part1. 백엔드와 REST API

📌 벡엔드 기초
- 클라이언트
- 1) 사용자 → 프론트엔드 (사용자 입장에서는 서버에게 받아온 화면)
- 2) 프론트엔드 (백엔드 입장에서)
- 웹 서버의 역할
- 정적 페이지 : 회사 소개, 회사 연혁, 회사 오시는 길 등등 개개인마다 다른 데이터가 뿌려지는 것이 아니라 누가 봐도 보는 사람들이 같은 데이터를 보게 만든 페이지
- 동적 페이지 : 개개인에 맞게 데이터가 바뀌는 페이지. 데이터가 계속 바뀌고 추가되는 페이지. 데이터가 추가되거나 삭제되거나 수정이 되거나 하는 (자동으로!!!) 페이지
- 백엔드에서는 정적 페이지와 동적 페이지를 따로따로 관리를 하긴 함
- 웹 서버에서는 정적 페이지
- 웹 어플리케이션 서버에서는 동적 페이지
- 요즘 백엔드는 정적 페이지 영역보다는 동적 페이지 영역을 신경을 많이 씀
- 웹 서버 : 프론트엔드의 화면과 정적 페이지
- 동적 페이지 : 웹 어플리케이션 서버와 데이터베이스의 영향을 받음
- 웹 어플리케이션 서버와 데이터베이스
📌 API란 (feat. 인터페이스)
- 백엔드 개발자는 API를 만듦.
- API (Application Programming Interface)
- 지하철 도착 어플? 카카오맵, 네이버 지도, 개인 어플
- 라이브러리에 접근하기 위한 규칙들을 정의한 것
- 나 이 데이터 좀 줘. 나 이 데이터 연산 좀 해줘.
- Interface
- 인터페이스란?
- 중간에서 양쪽에 있는 친구들을 중재해주고, 매개체가 되어주는 역할
- GUI : Graphic User Interface
- = 컴퓨터(프로그램)한테 명령을 내릴 때, 그래픽을 사용해서 명령을 내리는 방식
- CLI : Command Ling Interface
- = 명령어 문장("줄") 컴퓨터한테 명령을 내리는 거.
📌 REST API란
- ✔ API : "데이터 아무렇게나" 주면 되는 거?
(과거) HTTP 형식을 따르지 않고, 대충 끼워넣어
- ✔ HTTP 창시자 : 형식 따르면 효율 극대화!!
"REST API" = HTTP 규약을 잘 따른 API
- 웹 (=인터넷 망 속에 가상 공간) 개발자
- = 인터넷을 돌아다니기 위한 규약을 지켜야만!!
- = HTTP를 지켜야만!!!
- REST API : HTTP 규약을 잘 따른 API vs RESTful API : HTTP 규약을 매우 매우 잘 따른 API
📌 HTTP에 담아 보내야 하는 것들
- "인터넷 상에서 공유/전달 하고 싶은 모
든 것들은 다 HTTP에 넣어서 보내야 한다!"
- 위는 프론트엔드 아래는 프론트엔드와 백엔드 그 사이 쯤...
💻 HTTP 프로토콜 템플릿
- Head - Body
- Head에는,
- 1) 통신 상태가 어떤지 알려줘요
- 예를 들어
- 200 : 정상이다
- 404 : 클라이언트가 원하는 걸 못 찾겠다
- 500 : 서버가 이사아다
- 우리는 이 숫자들을 HTTP (status) code라고 부름
- 2) 응답이 어떤 형태인지 적어줘요. 예를 들어 html이다.
- Body에는
- 1) 전달해줄 데이터/화면/...
- 2) 이 데이터 좀 줄래? + "목적" (요청할 때)
- 전체 상품 보고 싶어 = 전체 상품 리스트 + "조회"
- 이 상품 등록 해줘 = ___ + "등록"
- 웹 페이지가 어디있는지 "위치"를 알려주는 것 뿐 아니라, 데이터 연산 해달라고 서버에 요청을 보내는 방법
📌 URL + method 연습 1
- URL 연습
- <REST API URL 규칙>
- 대문자X, 소문자O
- 언더바(_)X, 하이픈(-)O
- 마지막에 / 포함X
- ✨행위를 포함하지 않습니다 = 목적을 포함하지 않습니다✨
- 파일 확장자 포함 X
- ✔️ 복수형을 쓴다
📌 API를 어떻게 사용하는가? (화면 실습)
- 쇼핑몰 메인 페이지 틀 → 전체 상품 조회 API → 전체 상품 데이터를 받고 → 받은 데이터를 페이지에 뿌려줌

- 상품 상세 페이지틀 → 상품1 개별 조회 API → 데이터를 받아서 → 틀에 맞게 뿌려줌

- 상품 관리 페이지 → 전체 상품 조회 API → 데이터…

- 상품 수정 페이지 → 상품 1 개별 조회 API //완료 버튼 → 상품 1 수정 API

📌 URL + method 연습 2 "API 설계"
1. 상품 전체 "조회" GET
2. 상품 id 개별 "조회" GET
3. 상품 id 개별 "수정" PUT
cf. 복수형으로 표현하면 좋은 이유
- 상품"들" 중에 id 값을 가지는 개별 데이터
- 통일감
📌 HTTP method
💻 HTTP에 담아보내는 나의 목적 = HTTP method
- 목적을 영어로..? method
- HTTP = 규약 = 정해둔 용어가 있어요.
- "외울 필요는 없어요! 대신 적절한 method를 찾아서 사용해주세요."
- 생성(=등록) : POST
- 조회 : GET
- 수정 : PUT(덮어쓰기) / PATCH
- 삭제 : DELETE
- HEAD, OPTIONS, CONNECT, TRACE //데이터 외의 것에 대해서 설정을 하는 메소드, 통신일 때
- cf. PATCH : 일부 변경? 부분 수정? ex. 마이페이지 : 연락처, 이메일, 집 주소, 이름 (특정 요소만 바꿀 때) ⇒ 부분 수정