WEB 10

[Web Application] SLF4J를 이용한 로깅

김영한님 Spring MVC 강의를 듣다가 @SLF4J 를 달고 log.info(), log.debug()등을 통해 로그를 출력하는 예제를 공부하다가 SLF4J에 대해 공부를 해본 내용을 정리하게 되었다. 먼저 로깅이 무엇이고 왜 해야하는지를 알아보자. 로깅이란?log를 생성하도록 시스템을 작성하는 행위이다.  로깅은 왜 해야 할까?로그들은 테스트할 때 재현하기 힘든 버그가 개발 완료된 환경에서 발생했을 경우, 그런 버그들에 대한 정보를 알려줄 수 있으며,구문들 사이에 걸리는 시간 등의 성능에 관한 통계와 정보를 제공할 수 있다. 로그가 제공하는 정보의 양은 프로그램이 실행되는 중에도 설정이 가능한 것이 이상적이다.설정이 가능할 때, 로그는 예기치 못한 특정 문제들을 디버그하기 위해 코드를 수정하고 다시..

WEB/Application 2024.12.24

[HTTP] HTTP 헤더(1) - 일반 헤더

HTTP 헤더 개요HTTP 헤더(복습)header-field = field-name ":" OWS field-value OWS (OWS:띄어쓰기 허용)field-name은 대소문자 구문 없음HTTP 헤더의 용도HTTP 전송에 필요한 모든 부가정보예) 메시지 바디의 내용, 메시지 바디의 크기, 압축, 인증, 요청 클라이언트, 서버 정보, 캐시 관리 정보...표준 헤더가 너무 많음https://en.wikipedia.org/wiki/List_of_HTTP_header_fields필요시 임의의 헤더 추가 가능helloworld: hihiHTTP 헤더 분류 - RFC2616(과거)General 헤더: 메시지 전체에 적용되는 정보, 예) Connection: close요청 메시지 / 응답 메시지 이런 거에 구분 ..

WEB/HTTP 2024.07.10

[HTTP] HTTP 상태코드 (1XX, 2XX, 3XX, 4XX, 5XX)

HTTP 상태코드HTTP 상태코드란?클라이언트가 보낸 요청의 처리 상태를 응답에서 알려주는 기능1xx (Informational): 요청이 수신되어 처리중2xx (Successful): 요청 정상 처리3xx (Redirection): 요청을 완료하려면 추가 행동이 필요4xx (Client Error): 클라이언트 오류, 잘못된 문법 등으로 서버가 요청을 수행할 수 없음5xx (Server Error): 서버 오류, 서버가 정상 요청을 처리하지 못함만약 미래에 모르는 상태 코드가 나타나면?클라이언트가 인식할 수 없는 상태코드를 서버가 반환하면?클라이언트는 상위 상태코드로 해석해서 처리미래에 새로운 상태 코드가 추가되어도 클라이언트를 변경하지 않아도 됨예)299 ??? -> 2xx (Successful)45..

WEB/HTTP 2024.07.09

[HTTP] HTTP 메서드 활용 - HTTP API 설계 예시

HTTP 메서드 활용HTTP API 설계 예시HTTP API - 컬렉션POST 기반 등록예) 회원 관리용 API 제공하는 상황이라고 가정HTTP API - 스토어PUT 기반 등록예) 정적 컨텐츠 관리, 원격 파일 관리PUT과 POST 모두 데이터를 등록할 때 사용할 수 있지만, 약간 다른 특징이 존재한다PUT과 POST의 각각의 특징에 대해서 아래서 다룰 것이다.HTML FORM 사용웹 페이지 회원 관리GET, POST만 지원회원 관리 시스템API 설계 - POST 기반 등록회원 목록 /members -> GET정렬 등의 검색 옵션이 필요하면 query parameter를 사용하자회원 등록 /members -> POST컬렉션에, 회원을 관리하는 uri(/members)에 데이터를 넣으면 회원이 새로 등록..

WEB/HTTP 2024.07.08

[HTTP] HTTP 메서드 활용 - 클라이언트에서 서버로 데이터 전송

HTTP 메서드 활용클라이언트에서 서버로 데이터 전송HTTP API 설계 예시클라이언트에서 서버로 데이터 전송데이터 전달 방식은 크게 2가지가 있다.쿼리 파라미터를 통한 데이터 전송GET주로 정렬 필터(검색어)ex) ?q=hello메시지 바디를 통한 데이터 전송POST, PUT, PATCH회원 가입, 상품 주문, 리소스 등록, 리소스 변경4가지 상황 정적 데이터 조회이미지, 정적 텍스트 문서동적 데이터 조회주로 검색, 게시판 목록에서 정렬 필터(검색어)HTML Form을 통한 데이터 전송회원 가입, 상품 주문, 데이터 변경HTTP API를 통한 데이터 전송회원 가입, 상품 주문, 데이터 변경서버 to 서버, 앱 클라이언트, 웹 클라이언트(Ajax)정적 데이터 조회쿼리 파라미터를 사용하지 않는다 정리이미지..

WEB/HTTP 2024.07.08

[HTTP] HTTP 메서드

HTTP 메서드HTTP API를 만들어보자HTTP 메서드 - GET, POSTHTTP 메서드 - PUT, PATCH, DELETEHTTP 메서드의 속성HTTP API 만들기Example.요구사항 : 회원 정보 관리 API 만들기회원 목록 조회회원 조회회원 등록회원 수정회원 삭제API URI 설계회원 목록 조회/read-member-list회원 조회/read-member-by-id회원 등록/create-member회원 수정/update-member회원 삭제/delete-member이것이 과연 좋은 URI 설계일까?URI는 리소스를 기준으로 설계를 해야한다.URI에서 가장 중요한 것은 리소스 식별이다리소스의 의미?회원을 등록하고 수정하고 조회하는 것이 아님ex) 미네랄을 캐는 동작에서 미네랄이 리소스임회원이..

WEB/HTTP 2024.06.30

[HTTP] HTTP 기본: 비 연결성, HTTP 메시지

HTTP 기본(비 연결성, HTTP 메시지)연결을 유지하는 모델    클라이언트 1, 2, 3의 연결이 유지되고 있다단점 : 클라이언트가 요청을 보내지 않아도 계속 연결을 서버가 유지해야 한다연결을 유지하지 않는 모델  요청을 주고 받을 때만 연결을 하고 그 다음에는 연결을 끊어버려 서버가 유지하는 자원을 최소한으로 줄일 수 있다비 연결성(connectionless)HTTP는 기본이 연결을 유지하지 않는 모델일반적으로 초 단위의 이하의 빠른 속도로 응답1시간 동안 수천명이 서비스를 사용해도 실제 서버에서 동시에 처리하는 요청은 수십개 이하로 매우 작음예) 웹 브라우저에서 계속 연속해서 검색 버튼을 누르지는 않는다.서버 자원을 매우 효율적으로 사용할 수 있음비 연결성의 한계와 극복TCP/IP 연결을 새로 ..

WEB/HTTP 2024.06.25

[HTTP] HTTP 기본: 클라이언트-서버 구조, Stateful, Stateless

HTTP 기본(클라이언트 서버 구조, Stateful, Stateless)Hyper Text Transfer ProtocolHTTP 메시지에 모든 것을 전송HTML, TEXTIMAGE, 음성, 영상, 파일JSON, XML (API)거의 모든 형태의 데이터 전송 가능서버간에 데이터를 주고 받을 때도 대부분 HTTP 사용지금은 HTTP 시대!HTTP 역사HTTP/0.9 1991년: GET 메서드만 지원, HTTP 헤더XHTTP/1.0 1996년: 메서드, 헤더 추가HTTP/1.1 1997년: 가장 많이 사용, 우리에게 가장 중요한 버전RFC2068 (1997) -> RFC2616 (1999) -> RFC7230~7235 (2014)HTTP/2 2015년: 성능 개선HTTP/3 진행중: TCP 대신에 UDP ..

WEB/HTTP 2024.06.25

[HTTP] URI와 웹 브라우저 요청 흐름

URI와 웹 브라우저 요청 흐름URI(Uniform Resource Identifier)리소스를 식별하는 통합된 방법.Uniform : 리소스 식별하는 통일된 방식Resource : 자원, URI로 식별할 수 있는 모든 것(제한 없음)Identifier : 다른 항목과 구분하는데 필요한 정보URI? URL? URN?URI는 로케이터(locater), 이름(name) 또는 둘 다 추가로 분류될 수 있다URL : Uniform Resource Locater, 리소스가 있는 위치를 지정우리가 웹 브라우저에 적는 것URN : Uniform Resource Name, 리소스에 이름을 부여ex) ISBNurn:isbn:12345678 (어떤 책의 isbn URN)URN 이름만으로 실제 리소스를 찾을 수 있는 방법이..

WEB/HTTP 2024.06.25