Back-end/Spring boot

웹 개발

메델 2022. 9. 20. 04:57

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

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