1. Web이란?
WWW(World Wide Web, W3)
인터넷이 연결된 컴퓨터를 통해 사람들이 정보를 공유할 수 있는 전 세계적인 정보공간
- Web Site
네이버와 같은 HTML로 구성된 여러 사이트등
- API(Application Programming Interface)
Kakao Open API, Naver Open API 등
- User Interface
Chrome, Safari, Explorer, Smart Watch 등
2. REST(Representational State Transfer: 자원의 상태 전달) - 네트워크 아키텍처
- Client, Server : 클라이언트와 서버가 서로 독립적으로 분리되어 있어야한다.
- Stateless: 요청에 대해서 클라이언트의 상태를 서버에 저장하지 않는다.
- Cache : 클라이언트는 서버의 응답을 Cache(임시저장)할 수 있어야한다.
클라이언트가 Cache를 통해 응답을 재사용할 수 있어야하며 이를 통해 서버의 부하를 낮춘다.
- 계층화(Layered System): 서버와 클라이언트 사이에 방화벽, 게이트웨이, Proxy 등 다양한 계층 형태로 구성이 가능해야하며 이를 확장할 수 있어야 한다.
- 인터페이스 일관성: 인터페이스의 일관성을 지키고 아키텍처를 단순화시켜 작은 단위로 분리하여 클라이언트와 서버가 독립적으로 개선될 수 있어야한다.
- Code on Demand(Optional) :자바 애플릿, 자바스크립트 등 특정한 기능을 서버로부터 클라이언트가 전달받아 코드를 실행할 수 있어야한다.
REST를 잘사용 했는지 판단법
- 자원의 식별 : 웹 기반의 REST에서는 리소스 접근을 할때 URL사용
- 메세지를 통한 리소스 조작 :
- Web에서는 HTML, XML, JSON 등 다양한 방식으로 데이터 전달이 가능하다.
- 어떠한 타입의 데이터인지 알려주기 위해서 HTTP Header부분에 content-type을 통해서 데이터의 타입을 지정해줄 수 있음
- 리소스 조작을 위해서 데이터 전체를 전달 하지 않고 메세지로 전달
- 자기 서술적 메시지
- 요청하는 데이터가 어떻게 처리되어야 하는지 충분한 데이터를 포함할 수 있어야함
- HTTP 기반의 REST에서는 HTTP Method, Header 정보, URI의 포함되는 정보로 표현가능
- 그 외에 담지 못하는 정보들은 URI의 메세지 통하여 표현
- Application 상태에 대한 엔진으로써 하이퍼미디어
- REST API는 Client 요청에 대한 데이터만 응답하는 것이 아니라 리소스에 대한 Link 정보까지 같이 포함되어야 함
3. URI & URL
- URI(Uniform Resource Identifier)
- 인터넷에서 특정 자원을 나타내는 주소값으로 해당 값은 유일하지만 응답은 달라질 수 있다.
- URI 설계 원칙(RFC-3986)
- 슬래시 구분자는 계층 관계를 나타내는데 사용
- URI 마지막 문자로 슬래시는 포함하지 않는다.
- 하이픈(-)은 URI 가독성을 높이는데 사용
- 밑줄(_)은 사용하지 않는다.
- URI 경로에는 소문자가 적합
- 파일 확장자는 URI에 포함하지 않는다.
- 프로그래밍 언어에 의존적인 확장자는 사용하지 않는다.
- 구현에 의존적인 경로는 사용하지 않는다.
- 세션 ID는 포함하지 않는다.
- 프로그래밍 언어의 method명은 이용하지 않는다.
- 명사는 단수형보다 복수형을 사용하고 컬렉션에 대한 표현은 복수로 사용
- 컨트롤러 이름으로는 동사나 동사구를 사용한다.(http://fastcampus.co.kr/java/curriculums/web-master/re-order)
- 경로 부분 중에서 변하는 부분은 유일한 값으로 대체한다.
- CRUD기능을 나타내는 것을 URI에 사용하지 않는다.
- URI Query Parameter 디자인 (URI 쿼리부분은 컬렉션 결과에 대해서 필터링 가능)
- URI 쿼리는 컬렉션의 결과를 페이지로 구분하여 나타내는데 사용
- API에 있어서 서브 도메인은 일관성 있게 사용
- 클라이언트 개발자 포탈 서브 도메인은 일관성있게 만든다.
- URL(Uniform Resource Locator)
- 인터넷 상에서 자원, 특정 파일이 어디에 위치하는지 식별하는 주소
- URL은 URI의 하위 개념
- ex) 요청 : https://www.foo.co.kr/fastcampus.pdf
- URI 설계 원칙(RFC-3986)
- 인터넷에서 특정 자원을 나타내는 주소값으로 해당 값은 유일하지만 응답은 달라질 수 있다.
4. HTTP Protocol
- HTTP(Hyper Text Transfer Protocol)
- RFC 2616에서 규정된 Web에서 데이터를 주고 받는 프로토콜
- 컴퓨터에서 다룰 수 있는 것을 모두 전송할 수 있다. (HTML, XML, JSON 등)
- TCP를 기반으로한 REST의 특징을 모두 구현하고 있는 Web기반의 프로토콜
- 메시지를 Request하고 Response 하는 형태의 통신 방법
HTTP의 요청을 특정하는 Method 8가지
HTTP Status Code
(참고: fastcampus 한 번에 끝내는 Java/Spring 웹 개발 마스터)
'Back-end > Spring boot' 카테고리의 다른 글
11월 4주차 공부정리 (0) | 2022.11.27 |
---|---|
IOC, DI, ObjectMapper (0) | 2022.11.13 |
디자인 패턴 (0) | 2022.09.17 |
객체지향 (0) | 2022.09.15 |