- one to one, one to many, many to many 개념을 알고 있다.
- one to one - associated with one and only one record in another table. (example countries un representative)
- one to many - associated with one or more records in another table (example car to have multiple engineers)
- many to many - associated with multiple records in another table (example student classes)
- JOIN 기본 개념을 이해하고 있고,
LEFT JOIN, RIGHT JOIN, INNER JOIN, OUTER JOIN의 차이점들을 이해하고 있다.
- Inner Join - 두테이블에 교집합 공통된 값 출력 ex) select * from tableA Inner Join tableB on TableA.name = TableB.name
- Outer Join 두테이블의 합집합 공통된값끼리 묶고 공통되지않는 값도 다 출력
- HTTP 기본 개념 (요청/응답, stateless)를 이해하고 있고 메세지 구조를 이해하고 있다.
- 클라이언트가 먼저 HTTP에 요청을 서버에 보내면 서버는 요청을 처리한 후 결과에 따른 HTTP 응답을 클라이언트에게 보냄으로써 하나의 HTTP 통신이 된다.
- 백엔드 API 시스템의 엔드포인트 구현도 기본적으로 HTTP 요청을 인풋으로 받아서 HTTP 응답을 아웃풋으로 리턴하는 구조로 구현을 하게 된다.
- "ping" 엔드포인트의 경우에도 마찬가지로 HTTP 요청과 응답이 오고 가는 구조이다.
- HTTP 요청은 "/ping" 주소에 GET 요청을 보내는 것이고, HTTP 응답은 200 OK 상태 코드와 함께 "pong"이라는 텍스트를 보내는 것이다.
stateless
- 상태가 없다는 뜻으로, HTTP 통신에서는 상태라는 개념이 존재하지 않는다.
- 각각의 HTTP 통신은 독립적이며 그 전에 처리된 HTTP 통신에 대해서 전혀 알지 못한다.
- 이 특성의 장점은 HTTP 통신 간의 진행이나 연결 상태의 처리나 저장을 구현하지 않아도 되는 것이고,
- 단점은 HTTP 요청을 보낼 때마다 해당 요청을 처리하기 위해 필요한 모든 데이터를 매번 포함시켜서 요청을 보내야 한다.
- 위의 단점을 해결하기 위해 쿠키(cookei)나 세션(session) 등을 사용하여 HTTP 요청을 처리할 때 필요한 진행 과정이나 데이터를 저장한다.
- cookie : 웹 브라우저가 웹사이트에서 보내온 정보를 저장할 수 있도록 하는 조그마한 파일
- session : 쿠키와 마찬가지로 HTTP 통신상에서 필요한 데이터를 저장할 수 있게 하는 메커니즘. 쿠키와의 차이점은 쿠키는 웹 브라우저, 즉 클라이언트 측에서 데이터를 저장하는 반면에 세션은 웹 서버에서 데이터를 저장한다.
POST /payment-sync HTTP/1.1
Accept: application/json
Accept-Encoding: gzip, deflate
Connection: keep-alive
content-Length: 83
Content-Type: application/json
Host: intropython.com
User-Agent: HTTPie/0.9.3
{
"imp_uid": "imp_1234567890",
"merchant_uid": "order_id_8237352",
"status": "paid"
}
request 메세지 구조
- Start line : POST /users/login (HTTP/1.1 version)
- 서버로부터 데이터를 받고자 하면 GET 요청, 저장하고자 하면 POST 요청을 한다.
- Headers : metadata (body에 관한 정보)
- 헤더는 파이썬의 dictionary 처럼 key 와 value 로 되어 있다.
key와 value는 ":" 로 연결된다. google.com 에 보내는 HTTP 요청의 Host 헤더의 경우 다음과 같다. HOST : google.com
Host: 요청이 전송되는 target의 호스트의 URL 주소를 알려 주는 헤더다.
User-Agent: 요청을 보내는 클라이언트에 대한 정보 (ex. 웹 브라우저에 대한 정보)
Accept: 해당 요청이 받을 수 있는 응답(response) body 데이터 타입을 알려 주는 헤더.
- MIME (Multipurpose Internet Mail Extension) type이 value로 지정된다. 예를 들어, JSON 데이터 타입을 요청하는 경우에는
application/json MIME type을 value로 정해 주면 된다.
모든 데이터 타입을 다 허용하는 경우에는 /로 지정해주면 된다.
- MIME type은 굉장히 다양하다. API에서 자주 사용되는 MIME type은 application/json, application/octet-stream, text/csv, text/html, image/jpeg, image/png, text/plain, 그리고 application/xml 이 있다.
Connection: 해당 요청이 끝난 후에 클라이언트와 서버가 계속해서 네트워크 연결을 유지할 것인지 아닌지에 대해 알려주는 헤더
- HTTP 통신에서 서버간에 네트워크를 연결하는 과정이 다른 작업에 비해 시간이 걸리므로 HTTP 요청 때마다 네트워크 연결을 새로 만들지 않고 HTTP 요청이 계속되는 한 처음 만든 연결을 재사용하는 것이 선호되는데, 그에 대한 정보를 전달하는 헤더이다.
- connection 헤더의 값이 keep-alive 이면 계속해서 HTTP 요청을 보낼 것이므로 네트워크 연결을 유지하라는 뜻이다.
- connection 헤더의 값이 close 라고 지정되면 더 이상 HTTP 요청을 보내지 않을 것이므로 네트워크 연결을 닫아도 된다는 뜻이다.
Content-Type : HTTP 요청이 보내는 메시지 body의 타입을 알려주는 헤더이다.
- Accept 헤더와 마찬가지로 MIME type이 사용된다.
예를 들어, HTTP 요청이 JSON 데이터를 전송하면 Content-Type 헤더의 값은 applictaion/json 이 된다.
Content-Length: HTTP 요청이 보내는 메시지 body의 총 사이즈를 알려주는 헤더이다.
response 메세지 구조
- status line : http/1.1 200ok 같은 버젼 응답 성공
- headers : metadata
- body : token을 같이 보냈다 (쉽게 말해 티켓같다. 인증하기위서 토큰이라는것을 부여한다.)
Status Codes
- 200 성공
- 201 서버에 잘 저장 됬을떄
- 400 클라이언트 측에 에러
- 401 비회원이 접근했을때
- 403 회원이긴하지만 금지된 영역일때 (백앤드 개발자가 설계할때)
- 404 페이지르 나타내지 못할때
- 500 Internal Server Error
GET, POST 메소드 차이점을 알고,
프론트에서 넘어오는 데이터를 어떻게 처리해야 하는지 알고 있다.
- HTTP reqeust Methods
- Get : 데이터를 받아오기만 할때 (토큰을 보낸다.) 웹페이지에 접속해서 필요한 데이터를 불러올때
- POST : 데이터를 생성 /수정 하때 (바디에 담을 핵심 내용)
쿼리 스트링과 JSON으로 전달되는 데이터를 어떻게 받아서 처리하는지 알고 있다.
프론트에서 회원가입한 유저정보를 데이터 베이스에 저장 할 수 있다.
데이터 베이스에 저장된 User정보를 리턴하는 엔드포인트를 구현할 수 있다.
장고 ORM을 사용하여 DB CRUD(Create, Read, Update, Delete)을 구현 할 수 있다.
Decorator를 구현 및 엔드포인트에 적용 할 수 있다.
RESTful API 개념을 이해하고 URL 주소를 RESTful 식으로 구현할 수 있다.
프론트엔드 개발자와 소통하여 front 와 back을 연결 할 수 있다.
AWS에서 서버를 생성하여 django를 배포할 수 있다.
장고의 폴더 구조를 이해하고 있으며 각 파일의 목적과 용도를 이해하고 있다.
(views.py, urls.py, models.py)
스크럼 진행 방식에 대해서 이해했고 스크럼 방식 아래 프로젝트 진행할 수 있다.