[코드스테이츠] 05_23_TIL : 네트워크 _ HTTP
Today I Lean
네트워크 _ HTTP
일단... 이게 뭔말이지 싶다
가면갈수록 알다가도 모르겠는 아이들이 너무나도 많아서
어디서 부터 공부해야하는지 감이 안온다
일단 해보긴 하지만.. 아직까진 자신이 없는 하루하루다 ㅠㅠ
학습목표 및 개념정리
# REST API
- REST API에 대해 이해할 수 있다.
- REST API 문서를 읽고, 디자인 할 수 있다.
- Open API와 API Key에 대해 이해할 수 있다.
# Postman
- Postman이 무엇인지 이해하고 사용할 수 있다.
- HTTP API 테스팅이 무엇인지 알 수 있다.
- Postman을 사용하여 서버에 GET, POST 요청을 보내고 응답을 받을 수 있다.
# 과제 / Message States 요청
배운 것
# REST API
1. REST API 란?
: REST (Representational State Transfer) → 웹(http)의 장점을 최대한 활용할 수 있는 아키텍쳐
: 웹에서 사용되는 데이터나 자원을 HTTP URI로 표현하고, HTTP 프로토콜을 통해 요청과 응답을 정의하는 방식
- 좋은 REST API를 디자인 하는 방법
: 현실적으로 아래 성숙도 모델에서 2단계 까지만 충족해도 좋은 REST API라고 부를수 있다. (HTTP API 라고 부름)
단계 | 핵심 | 사용 방법 및 설명 |
0단계 | HTTP 프로토콜 사용 | 좋은 REST API를 작성하기 위한 기본 단계 |
1단계 | 개별 리소스와 통신 | 리소스와 응답에 따라 다른 엔드포인트 (명사 형태의 단어 사용) |
2단계 | CRUD에 맞는 적절한 HTTP 메소드 사용 | GET → 서버의데이터를 변화시키지 않는 요청에 사용 POST → 요청마다 새로운 리소스 생성 PUT → 요청마다 같은 리소스를 반환 (멱등성을 가짐) PUT → 교체 PATCH → 수정 |
3단계 | 하이퍼미디어 컬트롤 적용 | 하이퍼링크 리소스와 기능에 쉽고 효율적으로 접근할 수 있도록 함 |
2. Open API와 API Key
- Open API
: 누구에게나 열려있는 API
→ 이용수칙에 따라 제한사항(가격, 정보의 제한)이 있을 수 있다.
- API Key
: API를 이용하기 위한 Key
→ 허용된 이용자에게만 자원에 접근할 수 있는 권한을 API Key의 형태로 제공하고, 데이터를 요청할 때 API Key를 같이 전달해야만 원하는 응답을 받을 수 있음
# Postman
1. Postman 사용 방법
- HTTP API 테스트 도구
: 서버 API를 테스트 하거나, API를 만드는 과정에서 유용하게 사용됨
▪ HTTP API 테스트 도구 (CLI)
- curl (대부분의 리눅스 환경에 내장되어 있음)
- wuzz
▪ HTTP API 테스트 도구 (GUI)
- postman (가장 사용하기 쉬움)
- insomnia
- Postman 사용하기
: 이미 만들어져 있는 API 서버가 주어지는 경우 (HTTP로 소통하기 위해서는 API 서버의 endpoint가 URL로 주어져야 함)
▪ GET 요청하기
URL | http://3.36.72.17:3000/ | [주소] API 서버의 endpoint | |
메시지 조회 | Get /kimcoding/messages | [요청] kimcoding이 작성한 모든 메시지를 조회 | |
추가적인 파라미터 사용가능 | |||
roomname | 방 이름(문자열) | 특정 roomname만 조회 | |
Response | { "id": 1, "username": "김코딩", "text": "안녕하세요", "roomname": "로비", "date": "2021-04-02 12:00:00" } // ...여러 개의 메시지 |
[데이터] Request에 따른 Response 응답은 JSON 형식으로 나타남 |
|
속성 | parameter | 형식 | 설명 |
id | 숫자 | 고유한 아이디 | |
username | 문자열 | 사용자 이름 | |
text | 본문 내용 | ||
roomname | 방 이름 | ||
date | 작성한 시간 |
▪ Postman 화면 보기
- 새로운 탭 오픈 : 요청/응답 확인 가능
- HTTP 메서드 선택 : GET, POST, DELETE 등과 같은 메서드 중 하나 선택
- URL 입력 창 : URL과 Endpoint 입력 → http://3.36.72.17:3000/kimcoding/messages
- HTTP 요청 버튼
- HTTP 요청 시 설정할 수 있는 옵션 : 추가적인 파라미터 or 요청 본문(body) 추가 가능 → Params 탭의 Key, Value에 입력
- HTTP 응답 화면
▪ POST 요청하기
: GET요청과는 다르게 본문(body)를 포함하는 경우가 많음
URL | http://3.36.72.17:3000/ | [주소] API 서버의 endpoint | ||
메시지 추가 | POST /kimcoding/messages | [요청] kimcoding이 새로운 message 작성 | ||
요청본문에 반드시 포함 | parameter | 형식 | 설명 | 필수 여부 |
username | 문자열 | 사용자 이름 | 필수 | |
text | 본문 내용 | |||
roomname | 방 이름 | |||
Response | { "id": 5 } |
[데이터] Request에 따른 Response 응답은 JSON 형식으로 나타남 이때 id는 숫자 형식이고, 새로 생성된 메시지의 고유한 ID 값 |
- 본문의 형식 선택 1 → JSON 형식은 raw
- 본문의 형식 선택 2 → 보낼 형식에 맞는 타입 선택
- Content-Type: application/json 위 1,2 번은 HTTP 요청 헤더에 전송할 데이터 타입을 입력하는 것 과 같음
- 본문 내용 → 본문 입력, 앞서 선택한 타입에 맞게 작성함
- 전송
▪ 응답 살펴보기
: timeout → 서버가 요청에 대한 응답을 하지 않는 경우 요청이 끝나지 않음 (서버가 응답처리를 하도록 수정)
: 우측 상단의 HTTP 응답코드 확인
# 과제 / Message States 요청
?
*****
Tomorrow Chapter
# Database & SQL
# SQL
# 과제/Lean SQL
↓ 이전 글 ↓
↓ 코트스테이츠 부트캠프 관련 글 한번에 보기 ↓