1. REST 란 ?
- 웹에 존재하는 모든 리소스들에 대해서 고유한 URI를 부여해서 접근 (URL의 상위개념)
리소스(자원) - HTML 문서, 그림, 동영상, 데이터 등 - 웹에서 정보를 주고 받는 규칙 중 하나
REST 를 사용하는 이유는 무엇일까?
- 프로그래밍 언어나 플랫폼에 종속적이지 않다.
- 다양한 브러우저와 다양한 디바이스(Android, iPhone)에서 통신 필요
- 서버는 클라이언트에게 데이터만 제공, 화면x , 화면은 클라이언트 웹에 구현한다. 클라이언트애플리케이션에게 서비스를 제공하는 REST API만 제공하면 된다. 즉 클라이언트의 URL요청에 대해서 서버가 응답을 하는 것이며 클라이언트가 사람이 아닌 클라이언트 애플리케이션이기 때문에 view를 출력하지 않는다. 데이터만 출력하면 되어서 Json 형태의 데이터를 출력하는 서버의 메서드를 말한다.
- 최근 웹사이트들은 REST 기반인 경우가 많다. (오픈 API, 소셜 API) , 약 90% 기업들이 REST API기반
JSON (Javascript Object Notation)
서버와 클라이언트 사이에 데이터를 주고 받을 때 흔히 사용되는 포멧이다.
JSON 포멧은 Javascript 언어의 객체나 배열의 문법과 동일하다.
2. REST의 구성요소
▷ 자원(Resource) - 모든 리소스들은 고유한 ID를 가지고 있음
URL로 표현 -> Https://wwww.naver.com/memeber/10/profile
▷ 행위(Verb)- 클라이언트가 각 자원에 요청할 수 있는 방법
HTTP Method로 표현 🠆 GET, POST, PUT, DELETE 등
▷ 표현(Representation) - 서버가 클라이언트에게 보내는 자원의 데이터 형태
JSON, XML 등으로 표현
3. REST의 구성요소 - 자원(URL)
REST의 구성요소를 앞서 살펴보았다. 구성요소 중 자원을 보면 위의 그림과 같이 URI와 URL이 형태를 볼 수 있다.
우리가 홈페이지에 들어가면 주소창에 흔히 볼 수 있다.
그 전에 http와 https의 개념에 대해 먼저 알아보도록 하자
HTTP(HyperText Tranfer Protocol)
HTTP는 하이퍼 텍스트 전송 프로토콜의(Hypertext Transfer Protocol)의 약자이다. 서로 다른 시스템들 사이에서 통신을 주고받게 해주는 가장 기초적인 프로토콜이다.
서버에서 브라우저로 데이터를 전송해 주는 용도로 가장 많이 사용된다. 인터넷의 초기에 모든 웹사이트에서 기본적으로 사용되었던 프로토콜이였다.
HTTP 다음으로 HTTPS가 있는것을 보면 직감적으로 그 전에 HTTP가 있었고 HTTPS로 발전해 나아갔다는 것을 알 수 있을 것이다.
HTTPS(HyperText Transfer Protocol over Secure Socket Layer)
HTTPS는 하이퍼 텍스트 전송 프로토콜 보안(Hypertext Transfer Protocol Secure)의 약자이다.
HTTP에서 Secure Socket Layer가 추가된 것을 볼 수 있다. 통신의 인증과 암호화를 위해 개발되었다. SSL이나 TLS 프로토콜을 통해 세션 데이터를 암호화한다. 기본 TCP/IP 포트는 443이다. 원어에서 알 수 있듯이 SSL프로토콜 위에서 HTTPS프로토콜이 동작한다.
일반 HTTP 프로토콜의 문제점은 서버에서부터 브라우저로 전송되는 정보가 암호화되지 않는다는 것이다. 이 말은 즉, 데이터가 쉽게 도난당할 수 있다는 것이다. HTTPS 프로토콜은 SSL(보안 소켓 계층)을 사용함으로써 이 문제를 해결했다. SSL은 서버와 브라우저 사이에 안전하게 암호화된 연결을 만들 수 있게 도와주고, 서버 브라우저가 민감한 정보를 주고받을 때 이것이 도난당하는 것을 막아준다.
SSL 인증서
홈페이지에 비밀번호, 신용카드정보, 계좌서비스, 인증등의 여러 민감한 정보들을 다루는 것이라면 더욱 보안에 대해 중요성이 높을 것이다.
SSL 인증서는 사용자가 사이트에 제공하는 정보를 암호화한다. 즉 데이터를 암호로 바꾼다고 생각하면 된다. 이렇게 전송된 데이터는 중간에서 누군가 훔쳐 낸다고 하더라도 데이터가 암호화되어있기 때문에 해독할 수 없다. 그 외에도 HTTPS는 TLS(전송 계층 보안) 프로토콜을 통해서도 보안을 유지한다.
TSL은 데이터 무결성을 제공하기 때문에 데이터가 전송 중에 수정되거나 손상되는 것을 방지하고, 사용자가 자신이 의도하는 웹사이트와 통신하고 있음을 입증하는 인증 기능도 제공하고 있다.
→ 그렇다면 만약 웹사이트를 만들때 전자상거래를 안하고 방문자들에게 민감한 정보들을 다루지 않는다고 하면 HTTPS 를 사용하지 않아도 되는 것일까?
HTTP vs HTTPS 차이 그 두번째는 SEO 품질에 있다. HTTPS의 장점은 보안상 우위에만 있는 것이 아니다. 사실 HTTPS로 전환하게 되면 검색엔진 최적화(SEO)에 있어서도 큰 혜택을 볼 수 있다. 가장 안전하다고 생각하는 사이트를 더 많이 방문한다.
다시 돌아와서 REST의 구성요소에 대해 알아보도록 하겠다.
▷ https://
자원에 접근하기 위한 프로토콜
▷ comic.naver.com
Host/ Domain을 나타냄
▷ :80
기본적인 포트는 80이며 생략이 되고 실제로는 위의 그림처럼 :80이 붙는다.
▷ Query Parameters
key 와 value로 되어 있으며, 여러개를 사용할 때는 & 기호를 사용한다.
▷ Anchor
#은 HTML에서 A태크를 사용하면 붙게 된다.
== URL와 URI는 비슷하지만 URL은 PATH까지 위치하고 , URI는 최종 자원까지 위치한다.
앞서 HTTP와 HTTPS를 알아봤는데 간단하게 생각해서, http 구조의 내용을 암호화 해서 주고 받는게 https 라고 생각을 하면 된다.
HTTP와 HTML
- HTTP: HyperText Transfer Protocol
인터넷에서 HTML 문서를 교환하기 위해 만든 통신 규약
Request와 Reponse 구조로 구성 - HTML: Hyper Text Markup Language
웹 페이지를 만들기 위한 언어 - Hyper Text: 웹 페이지 (HTML 문서, CSS, JavaScript, 이미지 파일 등)
HTTP 응답 코드와 응답 메시지
REST의 구성요소 - 행위(HTTP Method)
get : 사용자가 입력한 값이 퀴리스트링으로 만들어진다.
post : 사용자가 입력한 값이 요청바디에 담겨 사용이 된다. 주소 url에 쿼리 스트링이 만들어지지 않기 때문에 보안상 더 안전하다.
REST의 구성요소 - 표현(JSON)
- JSON : JavaScript Object Notation
자바스크립트에서 객체, 배열, 숫자, 문자열 등을 직렬화하기 위한 표기법
네트워크에서 데이터를 주고받는 데 자주 사용되는 경량의 데이터 형식
키:값 쌍으로 데이터 객체 표현. 키는 쌍따옴표("")로 표시
JSON Example
Java와 Spring에서 JSON 사용하기 🠆 Jackson
JSON 🠆 대부분의 웹 서비스에서 가장 많이 사용하는 데이터 포맷
- Java에서 Json 관련 라이브러리: Gson, Jackson
- Jackson 라이브러리가 제공하는 기능
자바 객체 🠆 JSON 객체로 변환
JSON 객체 🠆 자바 객체로 변환
REST API 설계 규칙
- URI는 정보의 자원을 표현해야 한다.
- 자원에 대한 행위는 HTTP Method(GET, POST, PUT, DELETE)로 표현
해야 한다.
REST API 설계 예시
'개념정리' 카테고리의 다른 글
[Chapter6] Controller , Log4j , RequestMapping (0) | 2021.11.21 |
---|---|
HTTP & HTTPS (0) | 2021.11.14 |
스레드 (0) | 2021.11.10 |
객체지향의 사실과 오해 (0) | 2021.11.09 |
1주차 개념 스터디 (0) | 2021.07.31 |