Web 기초

강9·2024년 1월 5일
0

Web

목록 보기
1/7
post-thumbnail

🔖 HTTP

Hyper Text Transfer Protocol (어플리케이션 컨트롤 프로토콜(약속))

GET, POST, PUT, DELETE, OPTIONS, HEAD, TRACE, CONNECT 의 method가 존재한다.

  1. HTTP로 RFC 2616에서 규정된 Web에서 데이터를 주고 받는 프로토콜
  2. 이름에는 하이퍼텍스트 전송용 프로토콜로 정의되어 있지만 실제로는 HTML, XML, JSON, Image, Voice, Video, Javascript, PDF 등 다양한 컴퓨터에서 다룰 수 있는 것은 모두 전송할 수 있다.
  3. HTTP는 TCP를 기반으로한 REST의 특징을 모두 구현하고 있는 Web기반의 프로토콜

📌 통신


📌 Method

의미CRUD멱등성안정성Path VariableQuery ParameterDataBody
GET리소스 취득ROOOOX
POST리소스 생성, 추가CXXOO
PUT리소스 갱신, 생성C/UOXOO
DELETE리소스 삭제DOXOOX
HEAD헤더 데이터 취득-OO---
OPTIONS지원하는 메소드 취득-O----
TRACE요청 메시지 반환-O----
CONNECT프록시 동작의 터널 접속으로 변경-X----

💡 멱등성이란? : 서버에 여러번 요청해도 항상 결과가 같다의 표현
💡 △ 표시 : 할 수는 있지만 하지 않는 것을 추천하는 것을 △로 표시함


📌 Status Code

Code의미내용
1XX처리중처리가 계속 되고 있는 상태.
클라이언트는 요청을 계속 하거나 서버의 지시에 따라서 재요청
2XX성공요청의 성공
* PUSH : 200(수정), PUT : 201(생성) --> PUT에 한정된 내용 예시
3XX리다이렉트다른 리소스로 리다이렉트.
해당 코드를 받았을 때는 Response의 새로운 주소로 다시 요청
4XX클라이언트 에러클라이언트의 요청에 에러가 있는 상태.
재전송 하여도 에러가 해결되지 않는다.
5XX서버 에러서버 처리 중 에러가 발생한 상태.
재전송 시 에러가 해결 되었을 수도 있다.

⚠️ 주로 사용되는 Code

Code의미 / 내용
200성공
201성공, 리소스 생성 성공
301리다이렉트, 리소스가 다른 장소로 변경됨을 알림
303리다이렉트, Client에서 자동으로 새로운 리소스로 요청 처리
400요청 오류, 파라미터 에러
401권한 없음 (인증 실패)
404리소스 없음 (페이지를 찾을 수 없음)
500서버 내부 에러 (서버 동작 처리 에러)
502서버->리소스 서버에 연결이 안될 때 (Bad Gateway)
503서비스 정지 (점검 등)

🔖 REST

Representational State Transfer (자원의 상태 전달)
네트워크 아키텍처 원리

No.원리내용
1Client, Server클라이언트와 서버가 서로 독립적으로 분리되어져 있어야 한다.
2Stateless요청에 대해서 클라이언트의 상태가 서버에 저장되지 않는다.
3캐시클라이언트는 서버의 응답을 캐시할 수 있어야 한다.
클라이언트가 캐시를 통해서 응답을 재사용할 수 있어야하며,
이를 통해 서버의 부하를 낮춘다.
4계층화(Layered System)서버와 클라이언트 사이에 방화벽, 게이트웨이, 프록시 등
다계층 형태를 구성할 수 있어야하며, 확장할 수 있어야 한다.
5인터페이스 일관성아키텍처를 단순화 시키고 작은 단위로 분리해서 클라이언트, 서버가
독립적으로 개선될 수 있어야 한다.
6Code On Demand(optional)자바 애플릿, 자바스크립트 플래시 등 특정 기능을
서버가 클라이언트에 코드를 전달하여 실행할 수 있어야 한다.

📌 인터페이스의 일관성

인터페이스의 일관성이 잘 지켜졌는지에 따라서 REST를 잘 사용했는지를 판단할 수 있다.

  1. 자원 식별
    → 웹 기반의 REST에서는 리소스 접근을 URI를 사용한다.

    예시)

    URIResource식별자
    https://foo.co.kr/user/100user100
  2. 메시지를 통한 리소스 조작
    → Web에서는 다양한 방식으로 데이터를 전송할 수 있다.
    그 중에서는 HTML, XML, JSON, TEXT 등의 다양한 방법이 있다.
    이 중에서 리소스의 타입을 알려주기 위해 header 부분에 content-type을 통해 어떠한 타입인지를 지정할 수 있다.

  3. 자기 서술적 메시지
    → 요청하는 데이터가 어떻게 처리 되어져야 하는지 충분한 데이터를 포함할 수 있어야 한다.
    HTTP 기반의 REST에서는 HTTP Method와 Header의 정보로 이를 표현할 수 있다.

  4. 애플리케이션 상태에 대한 엔진으로써 하이퍼미디어
    → REST API를 개발할 때에도 단순히 Client 요청에 대한 데이터만 내리는 것이 아닌, 관련된 리소스에 대한 Link 정보까지 같이 포함되어야 한다.
    *이러한 조건들을 잘 갖춘 경우 REST Ful하다고 말하며, 이를 REST API라고 부른다.


🔖 URI

Uniform Resource Identifier (리소스 식별자)

특정 사이트, 특정 쇼핑 목록, 동영상 목록 등 모든 정보에 접근할 수 있는 정보

한 가지 리소스가 있다고 가정했을 경우 이곳에 접근할 수 있는 주소는 여러개가 존재할 수 있지만 한개의 주소가 여러개의 리소스를 접근할 수 없다.

📌 URI 설계

1️⃣ URI & URL

  1. URI (Uniform Resource Identifier)
    인터넷에서 특정 자원을 나타내는 주소값. (해당 값은 유일하다.)
    ex. https://www.foo.co.kr/resource/sample/1
    response : sample1.pdf, sample2.pdf, sample.doc

  2. URL (Uniform Resource Locator)
    인터넷 상에서의 자원, 특정 파일이 어디에 위치하는지를 식별하는 주소
    ex. https://www.foo.co.kr/sample1.pdf

  3. URLURI의 하위 개념이다.

2️⃣ URI 설계 원칙 (FRC-3986)

  1. 슬래시 구분자/는 계층 관계를 나타낼 때 사용한다.
  2. URI 마지막 문자로/는 포함하지 않는다.
  3. 하이픈-은 URI가독성을 높이는데에 사용한다.
  4. 언더바_는 사용하지 않는다.
  5. URI 경로에는 소문자가 적합하다.
  6. 파일 확장자는 URI에 포함하지 않는다. (ex. .jsp)
  7. 프로그래밍 언어에 의존적인 확장자를 사용하지 않는다. (ex. .do)
  8. 구현에 의존적인 경로를 사용하지 않는다. (ex. servlet)
  9. 세션 ID를 포함하지 않는다.
  10. 프로그래밍 언어의 Method명을 이용하지 않는다.
  11. 명사에 단수형보다는 복수형을 사용해야 한다. 컬렉션에 대한 표현은 복수로 사용
  12. 컨트롤러 이름으로는 동사동사구를 사용한다.
  13. 경로 부분 중 변하는 부분은 유일한 값으로 대체한다.
  14. CRUD 기능을 나타내는 것은 URI에 사용하지 않는다.
  15. URI Query Parameter 디자인
    • URI 쿼리 부분으로 컬렉션 결과에 대해 필터링할 수 있다.
    • URI 쿼리는 컬렉션의 결과를 페이지로 구분하여 나타내는데 사용한다.
  16. API에 있어서 서브 도메인은 일관성있게 사용해야 한다.
  17. 클라이언트 개발자 포탈 서브 도메인은 일관성있게 만든다.

📌 OSI 7 Layer

OSI 7 LayerTCP/IP
7. 응용계층4. 응용 계층
6. 표현 계층4. 응용 계층
5. 세션 계층4. 응용 계층
4. 전송 계층3. 전송 계층
3. 네트워크 계층2. 인터넷 계층
2. 데이터 계층1. 네트워크 접속
1. 물리 계층1. 네트워크 접속

🔖 HTML

Hyper Text Markup Language (하이퍼미디어 포맷)

XML을 바탕으로한 범용 문서 포맷

Chrome, Safari, Explorer에서 사용자가 알아보기 쉬운 형태로 표현

profile
코린이 일기

0개의 댓글

관련 채용 정보