[4주차] JavaScript - HTTP와 Restful API

minLuna·2023년 3월 25일
0

엘리스 AI트랙 7기

목록 보기
26/62

본 자료는 박규하 코치님과 Elice 플랫폼의 자료를 사용하여 정리하였습니다.

AJAX

  • 웹 페이지에서 서버와 비동기적으로 데이터를 주고받을 수 있게 해주는 기법
  • 일부분만 업데이트가 가능하다.
  • 핵심은 XMLHttpRequest 객체, 응답은 XML 형식일 수 있지만 텍스트나 JSON 형식일 수도 있다.

HTTP

  • 웹에서 클라이언트와 서버가 데이터를 주고받기 위한 통신규약
  • 요청과 응답으로 구성, 각각에는 메소드, 헤더, 바디 등의 요소가 있다.
  • 상태가 없는 프로토콜이므로, 각 요청과 응답은 독립적이며 서로 연관성이 없다.
  • 상태정보를 유지하기 위해서는 쿠키, 세션, 토큰등의 방법을 사용한다.

REST

  • 웹에서 사용되는 모든 데이터나 자원은 HTTP URI로 표현하고, 표준 HTTP 메소드(GET, POST 등)를 이용하여 자원에 대한 CRUD연산을 수행한다.
  • CRUD란 Create, Read, Update, Delete를 의미한다.
  • 제약조건
    • 클라이언트 서버 : 클라이언트와 서버가 분리되어 서로의 역할을 명확하게 구분
    • 무상태성 : 서버는 클라이언트의 상태정보를 저장하지 않고 매번 새롭게 처리
    • 캐시가능 : 클라이언트는 서버의 응답을 캐시할 수 있고, 유효기간 내에 재사용 가능
    • 계층화
    • 코드 온 디맨드 : 선택적 제약조건이며, 서버가 실행가능한 코드를 클라이언트에 전송, 기능확장
    • 자체표현적 : 요청과 응답은 메세지가 스스로 설명되어야 한다.

Rest API

  • Rest 아키텍처 스타일을 따르는 웹 서비스의 API
  • API는 사용자가 특정 기능을 사용할 수 있도록 제공하는 함수를 의미
  • Rest API는 HTTP의 요청메소드에 응하는 서버 API와 클라이언트 간 통신의 구조가 지켜야 할 좋은 방법을 명시한 것
  • 자원의 식별자(URI), 자원에 대한 행위(HTTP 메소드), 자원에 대한 표현(페이로드 포맷)으로 구성
  • 특징
    • 유니폼 인터페이스 : 요청과 응답이 일관된 형식을 갖도록 한다.
    • 주소지정가능 : 각 자원은 고유한 URI를 가지며, 해당 URI로 접근할 수 있다.
    • 연결성 : 하나의 자원이 다른 자원과 연결될 수 있다.
    • 상태전이

HTTP 메소드

  • 클라이언트가 서버에게 요청하는 작업의 종류를 나타내는 단어
  • 종류
    • GET : 서버에게 자원을 요청
      • 서버의 상태나 데이터베이스에 영향을 주지 않아야 한다.
    • POST : 서버에게 자원의 생성을 요청
      • 서버의 상태나 데이터베이스에 영향을 준다.
    • PUT : 서버에게 자원의 전체 수정을 요청
      • 동일한 요청을 여러번 보내도 결과가 같아야 한다.
    • PATCH : 서버에게 자원의 부분 수정을 요청
      • 동일한 요청을 여러번 보내면 결과가 달라질 수 있다.
    • DELETE : 서버에게 자원의 삭제를 요청
      • 서버의 상태나 데이터베이스에 영향을 준다

HTTP 상태코드

  • 서버가 클라이언트한테 응답할 때 전달하는 세자리 숫자
    • 요청의 처리 결과를 나타낸다.
  • 종류
    • 1xx(Informational) : 요청이 수신되었으며 처리중임을 나타낸다.
    • 2xx(Success) : 요청이 성공적으로 처리되었음을 나타낸다.
    • 3xx(Redirection) : 요청을 완료하기 위해 추가 작업이 필요함을 나타낸다.
    • 4xx(Client Error) : 클라이언트의 요청이 잘못되었음을 나타낸다.
    • 5xx(Server Error) : 서버가 정상적인 요청에 대해 처리할 수 없음을 나타낸다.

HTTP 헤더와 바디

  • HTTP 헤더
    • 요청과 응답에 대한 추가적인 정보를 나타내는 키-값 쌍의 집합
    • 콘텐츠 관련정보, 인증관련정보, 쿠키정보, 캐시관련정보 등 서버와 클라이언트 간 통신 시 필요한 정보를 담는다.
    • 클라이언트 요청 시, 서버응답 시 모두 헤더에 정보를 담을 수 있다.
    • 종류
      • 일반헤더 : 요청과 응답 모두에 적용되는 정보 ex) Date
      • 요청헤더 : 요청에 대한 정보 ex) Host
      • 응답헤더 : 응답에 대한 정보 ex) Location
      • 엔티티헤더 : 바디에 포함된 자원에 대한 정보 ex) Content-Type
      • 확장헤더 : 사용자 정의의 정보 ex) X-Requested-With
  • HTTP 바디
    • 요청과 응답이 실제로 전달되는 데이터
    • 형식은 Content-Type 헤더에 따라 달라질 수 있으며, 일반적으로 Rest API에서는 JSON이나 XML등의 구조화된 데이터 포맷을 사용

JSON

  • 자바스크립트의 객체표기법을 기반으로 한 경량의 데이터 교환 형식
  • 키-값 쌍의 집합으로 구성, 키는 문자열
  • 다른 프로그래밍 언어에서도 쉽게 파싱할 수 있으며, Rest API에서 주로 사용되는 페이로드 포맷이다.
profile
열심히

0개의 댓글