프로그래밍 정리
1. REST Api
REST Api를 알기 전에 먼저 REST(Representational State Transfer)에 대해 알아야 합니다.
REST는 6가지의 제약 조건이 존재합니다.
1. 클라이언트-서버 구조를 가집니다.
클라이언트와 서버 역할을 분리 신킵니다.
2. Stateless
서버는 요청 간에 클라이언트의 상태를 저장하지 않습니다. 그리고 모든 요청은 독립적이어야 합니다.
3. Cacheable
응답에 따라 클라이언트가 결과를 캐싱할 수 있습니다.
4. Uniform lnterface
URI, 메서드, 포맷 등 일관성을 유지합니다.
5. Layered System
중간 서버를 허용합니다.
6. Code on Demand
서버가 클라이언트에 코드를 전송해 실행합니다.
이제 REST Api를 알아보면 REST Api는 위 원칙을 지키는 API입니다.
예로 GET / user/1 이면 1번 유저 정보 조회라는 뜻입니다.
2. HTTP(HyperText Transfer Protocol)
웹에서 데이터를 주고받는 프로토콜입니다.
요청과 응답 구조로 동작합니다.(Request-Response)
GET /users/1 HTTP/1.1
Host: example.com
Content-Type: application/json
{ "name": "이름" }
위 코드는 HTTP의 요청 구조입니다. 하나씩 살펴보면
1. 요청라인: 메서드(GET), 경로(/user/1), 버전(HTTP/1.1)
2. 헤더: 요청 정보(Host, Content-Type 등)
3. 바디: 데이터(POST, PUT 등)
로 구성 되어있습니다.
HTTP/1.1 200 OK
Content-Type: application/json
{ "id": 1, "name": "이름" }
위 코드는 HTTP의 응답 구조입니다. 하나씩 보면
1. 상태라인: 버전, 상태코드, 메시지
2. 헤더: 응답 정보
3. 바디: 데이터
로 구성 되어있습니다.
그러면 REST Api와 HTTP는 무슨 관계가 있나면
REST Api는 HTTP 위에서 동작을 하고 HTTP 메서드와 CRUD 매핑을 합니다.
3. HTTP Status Code
HTTP Status Code는 서버가 클라이언트 요청에 대해 보내는 표준 응답 코드입니다. 코드 중에서 5가지의 종류가 있습니다.
1. 1xx : 정보
2. 2xx : 성공
3. 3xx : 리다이렉션
4. 4xx : 클라이언트 오류
5. 5xx : 서버 오류
여기 중에서도 많이 쓰는 코드들이 있습니다.
200 : OK, 성공
201 : Created, 생성 성공
204 : No Content, 성공인데 본문 없다.
400 : Bad Request, 잘못된 요청
401 : Unauthorized, 인증 필요
403 : Forbidden, 권환 없음
404 : Not Found, 리소스 없음
500 : Internal Server Error, 서버 에러
이렇게 8가지를 자주 사용합니다.
상태 코드가 중요한 이유는
1. 클라이언트가 결과를 해석할 수 있게 해줍니다.
2. 에러 처리, 디버깅, UX에 필수입니다.
4. CRUD
CRUD는 Create, Read, Update, Delete의 약자로 데이터베이스에서 가장 기본이 되는 4가지 동작을 의미합니다.
1. Create: 데이터 생성
2. Read: 데이터 조회
3. Update: 데이터 수정
4. Delete: 데이터 삭제
CRUD는 HTTP와 밀접한 관계가 있습니다.
CRUD HTTP
Create POST
Read GET
Update PUT
Delete DELETE
로 관계를 가집니다.
5. 관계형 데이터베이스(RDB)
관계형 데이터베이스는 테이블 구조로 데이터를 저장하는데 테이블에서 행(레코드)는 데이터 한 줄이고 열(칼럼)은 속성입니다. 그리고 테이블에서는 기본키와 외래키가 존재하는데 기본키는 각 행을 유일하게 식별하는 키이고 외래키는 다른 테이블과의 관계를 나타내는 키입니다.
관계형 데이터베이스의 특징을 살펴보면
1. 데이터 무결성: 중복 최소화, 일관성 유지시켜 줍니다.
2. 트랙잭션 지원: 원자성, 일관성, 고립성, 지속성이 존재합니다.
3. SQL 사용: 표준 쿼리 언어로 데이터를 조작합니다.
6. SQL(Structured Query Language)
SQL은 관계형 데이터베이스를 조작하는 표준 언어 입니다. 그리고 SQL에는 DDL, DML, DCL이라는 3가지의 데이터 언어가 있습니다.
DDL(데이터 정의어): CREATE, DROP, ALTER
DML(데이터 조작어): SELECT, INSERT, UPDATE, DELETE
DCL(데이터 제어어): GRANT, REVOKE
가 있습니다.
DDL부터 하나씩 보면
CREATE: 테이블을 생성하는 역할 수행
DROP: 테이블을 삭제하는 역할 수행
ALTER: 테이블을 수정하는 역할 수행
SELECT: 데이터를 조회하는 역할 수행
INSERT: 데이터를 삽입하는 역할 수행
UPDATE: 데이터를 수정하는 역할 수행
DELETE: 데이터를 삭제하는 역할 수행
GRANT: 유저에게 권한을 부여하는 역할 수행
REVOKE: 유저로부터 권한을 회수하는 역할 수행
이제 SQL과 CRUD의 관계를 알아보겠습니다.
SQL CRUD
SELECT Read
INSERT Create
UPDATE Update
DELETE Delete
로 관계를 이룹니다.