HTTP 통신

Jan 11, 2024
HTTP 통신

웹 서버는 보안을 위해 폴더를 하나 지정해야 함
 
호스트가 되어야함 - 인터넷이 달려있어야 함
서버는 웹 서버가 구현되어 소켓이 있어야 함
서버의 프로토콜을 HTTP로 만들어야 함
 
DNS 세팅
도메인 이름이니까 문자열 String을 들고 있는 서버 세팅을 해야 함
notion image
 
클라이언트는 브라우저를 열어서 url을 입력
notion image
 
목적지 주소, 내용 등 다 섞여있음 > Application이header, body 만듦 / 의미있게 구분
notion image
html 내용 : MIME 타입
미디어 타입 / 데이터 타입 = 확장자
인코딩 : 얼마나 끊어 읽어야 하는지?
notion image

HTTP 통신 과정


서버 입장:

  1. 대기 상태:
    1. 서버는 클라이언트의 요청을 기다리는 상태
  1. 요청 수신:
    1. 클라이언트가 특정 리소스를 요청하면, 서버는 해당 요청을 수신
  1. 요청 해석:
    1. 서버는 받은 요청을 해석하여 어떤 동작이 필요한지 판단
      이때 요청 메서드, URI, 헤더, 본문 등을 분석
  1. 리소스 처리:
    1. 필요한 경우, 서버는 데이터베이스 조회, 비즈니스 로직 실행 등을 통해 요청에 대한 처리를 수행
  1. 응답 생성:
    1. 서버는 클라이언트에게 전송할 응답을 생성
      이때 상태 코드, 헤더, 본문 등을 포함하여 응답을 구성
  1. 응답 전송:
    1. 서버는 완성된 응답을 클라이언트에게 전송
      이때 응답은 HTTP 응답 메시지의 형태로 전달
  1. 대기 상태 복귀:
    1. 서버는 다시 대기 상태로 돌아가 다음 클라이언트의 요청을 기다림

클라이언트 입장:

  1. 요청 작성:
    1. 클라이언트는 특정 리소스에 대한 요청을 작성
      이때 요청 메서드, URI, 헤더, 본문 등을 포함하여 요청을 완성
  1. 요청 전송:
    1. 작성된 요청은 HTTP 프로토콜을 사용하여 서버로 전송
  1. 응답 대기:
    1. 클라이언트는 서버로부터의 응답을 기다림
  1. 응답 수신:
    1. 서버로부터의 응답이 도착하면, 클라이언트는 이를 수신
  1. 응답 해석:
    1. 클라이언트는 받은 응답을 해석하여 상태 코드, 헤더, 본문 등을 확
  1. 페이지 렌더링 (HTML 처리):
    1. 클라이언트는 HTML 문서를 파싱
      CSS 및 JavaScript와 함께 웹 페이지를 렌더링
  1. 자원 요청 및 응답 (옵션):
    1. HTML 문서에 포함된 외부 리소스(이미지, 스타일시트, 스크립트 파일 등)는
      클라이언트에 의해 별도로 요청
      서버는 각 요청에 대한 응답을 전송
  1. 사용자 상호작용 대기:
    1. 클라이언트는 사용자의 상호작용을 대기
      필요에 따라 추가적인 요청을 생성하여 서버와 통신

Jackson Databind 사용 방법

실습문제


notion image
 
WAS
자바 Application이 받아서 파싱해서 원하는 데이터를 내가 해서 주는 것
자원을 요청 x
식별자 요청
 
** 식별자 : 해당 자원이나 데이터가 어떤 것인지를 서버에게 알려주는 역할
package com.metacoding.myhttp; import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; public class MyApp { public static void main(String[] args) { try { URL url = new URL("https://jsonplaceholder.typicode.com/todos/1"); // 소켓을 만들기 위한 객체 생성 HttpURLConnection conn = (HttpURLConnection) url.openConnection(); //서버 소켓에 연결 //conn이 소켓이 됨 : Http 프로토콜이 적용된 것 BufferedReader br = new BufferedReader( new InputStreamReader(conn.getInputStream()) ); String download = ""; while(true) { String line = br.readLine(); if(line == null) { break; } download = download + line; } System.out.println(download); } catch (Exception e) { throw new RuntimeException(e); } } }
notion image

 
 
Share article
RSSPowered by inblog