본문 바로가기
웹 서비스/웹 개발 101

개발 전 알아야할 기술과 구현 방법

by alswlfl 2022. 12. 31.

1. HTTP(HyperText Transfer Protocol)

: 애플리케이션 계층의 네트워크 프로토콜로, 통신하기 위한 규약

HTTP 요청과 응답

[동작]

1. 사용자는 브라우저라는 클라이언트를 통해 서버에 HTTP 요청을 전송

2. 브라우저의 주소 창에 URL을 치고 엔터를 누르면, 브라우저는 HTTP 요청을 해당 URL서버로 전송

3. 해당 서버는 그 결과인 HTTP 응답을 브라우저에 렌더링 함

[HTTP 요청]

  • 요청에는 메서드를 지정 → 메서드는 호스트에게 지정한 리소스에 어떤 작업을 하고 싶은지 알려주는 역할
    • GET: 리소스를 가져올 때 사용
    • POST: 리소스에 대해 임의의 작업할 때 사용 → 새 리소스를 생성하거나 요청 데이터를 처리하는 경우
    • PUT: 리소를 완전히 대체할 때 사용(클라이언트가 리소스 위치를 알고 URI 지정)
    • PATCH: 리소스의 부분만 변경
    • DELETE: 리소스를 삭제할 때 사용

[HTTP 응답]

  • 응답코드 존재
    • 200: 성공
    • 404: 해당 리소스 존재하지 않음
    • 403: 송신자는 해당 리소스에 대한 접근 권한 없음
    • 500: 서버 에러
  • Content-Type: 미디어 타입
  • 응답 바디: 서버 애플리케이션은 보통 HTTP 응답 바디에 요청 처리 결과 보냄

2. JSON(JavaScript Object Notation)

: 오브젝트를 표현하기 위한 문자열

  • 인터넷을 이용해 데이터를 교환하는 애플리케이션 모두 이해할 수 있는 형태로 오브젝트를 변환해야 함
  • 직렬화: 메모리 상의 오브젝트를 다른 형태로 변환하는 작업
  • 역직렬화: 다른 형태에서 오브젝트로 변환하는 작업
  • JSON은 키-값(Key-Value)형태로 표현

[JSON을 이용해 데이터 전달]

1. 오브젝트를 JSON형태의 문자열로 변환

2. HTTP요청의 바디 부분에 변환된 JSON을 넣어 요청 전송

3. 요청을 받은 애플리케이션은 HTTP 요청의 바디 부분에서 JSON꺼냄

4. 해당 JSON은 오브젝트로 변환하여 사용


3. 서버

: 프로그램으로, 지정된 포트에 소켓을 열고 클라이언트가 연결할 때까지 무한 대기하며 기다림

1) 정적 웹 서버(Static Web Server)

: 서버는 해당 HTML파일에 아무 작업도 하지 않고, 파일을 있는 그대로 반환

ex) 아파치, NginX

  • 지정된 경로에 원하는 리소스 파일을 저장하면 해당 리소스는 자동으로 웹 서버로 접근할 수 있음
  • 어떤 클라이언트가 요청하든 같은 응답을 반환

2) 동적 웹 서버(Dynamic Web Server)

: 요청을 처리한 후, 처리한 결과에 따라 응답 바디를 재구성하거나 HTML 템플릿 파일에 결과를 대체하여 보냄

ex) 아파치 톰캣

  • 클라이언트가 누군지, 어떤 매개변수를 보내는지에 따라 같은 요청이라도 다른 응답을 받음
  • 서블릿 엔진 또는 서블릿 컨테이너
    • 개발자들은 서블릿 엔진을 설치한 후, 서블릿 엔진에게 본인이 개발한 비즈니스 로직, 즉 클래스 파일과 해당 클래스 파일을 어느 요청에서 실행해야 하는지 알려줘야함
    • Javax.servlet.httpHttpServlet의 상속받는 서브 클래스가 서블릿 엔진이 이해할 수 있는 클래스
    • 서블릿 엔진 이용하여 서버를 처음부터 구현하지 않고도 각기 다른 비즈니스 로직을 구현하고 배포 가능