시작하며 HTTP(HyperText Transfer Protocol) 통신은 클라이언트와 서버 간 데이터를 주고 받기 위한 프로토콜이다. 다시 말하면, HTTP 통신 자체는 어떤 형식의 데이터를 보낼지 미리 정의해 놓는 방식일 뿐이다. 따라서 클라이언트와 서버간 HTTP 통신이 일어나기 위해서는 데이터를 주고 받기 위한 여러 기술이 필요하다. 이번 글에서는 HTTP 통신이 일어나기 위해 내부적으로 어떤 일이 일어나는지를 정리해본다. IP 레이어 IP 레이어란 무엇인가? 먼저 클라이언트와 서버를 생각해보자. 클라이언트와 서버는 컴퓨터일 뿐이며, 데이터를 요청하는 쪽이 클라이언트 데이터를 보내는 쪽이 서버가 된다. 따라서 이 둘간의 통신을 위해서는, 두 컴퓨터가 연결되기 위한 주소값이 필요하다. 이러한 역할..
분류 전체보기
Java에서 안전한 타입 변환을 위해 선택했던 방법 서버와의 HTTP 통신을 통해 응답을 받아오기 위해 다음과 같은 Response 인터페이스를 상속하는 간단한 클래스 Success와 Fail을 만들었다고 해보자. sealed interface Response data class Success(val responseBody: String) : Response data class Fail(val errorMessage: String) : Response 기존 자바에서는 안전하게 타입을 변환하기 위해 타입을 변환하기 전에 instanceof 함수를 통해 타입을 체크한 후 다시 타입 변환을 해서 메서드를 호출해야 했다. public class ResponseMain { public static void mai..
IntelliJ 사용해 간단하게 HTTP Request 실행해보기 IntelliJ에는 HTTP 통신을 테스트하기 위한 편리한 기능이 있다. 바로 .http 확장자 파일을 통해 간단하게 HTTP Request를 작성하고, 실행하는 기능이다. 클라이언트 개발자들은 간단하게 HTTP 요청을 실행해봐야 할 일이 많은데, 이 기능을 사용하면 PostMan등을 사용하지 않고도 손쉽게 HTTP Request를 만들고 HTTP Response를 볼 수 있다. 이를 위해서는 HTTP Request 실행을 위한 .http 파일을 만들어야 한다. HTTP Request 실행을 위한 .http 파일 만들기 .http 파일은 IntelliJ의 Scratches and Consoles 탭의 Scratches 폴더에 만들어야 한다..
HTTP 응답 메세지의 구성 HTTP 응답 메세지는 다음과 같은 형태로 구성된다. [HTTP 버전] [응답 상태 코드] [상태 메세지] [헤더] [빈 줄] [메세지 바디] 각 항목에 대한 설명은 다음과 같다. HTTP 버전: HTTP의 버전을 나타낸다. HTTP/0.9, HTTP/1.0, HTTP/1.1, HTTP/2.0 등이 될 수 있다. 응답 상태 코드: 100번대부터 500번대의 응답 코드를 나타낸다. 예를 들어 200이라면, 요청이 성공했다는 것을 뜻한다. 상태 메세지: 상태 메세지를 나타낸다. 예를 들어 상태 코드가 200번이라면 OK 같은 메세지를 전송할 수 있다. 상태 메세지는 없을 수도 있다. 헤더: 헤더에는 메세지 바디를 통해 전달할 콘텐츠의 MIME 타입(Content-Type), 콘텐..
Kotlin Multiplatform의 약자는 KMP 일까 KMM 일까? Kotlin Multiplatform을 공부하면서, 이상한 점을 하나 발견했다. 어떤 사이트에서는 약자를 KMM이라고 쓰고 어떤 사이트에서는 KMP이라고 쓰는 것을 발견했는데, 일반적으로 하나의 제품을 가리킬 때 두가지 약어로 가리키는 경우는 드물기 때문에 이상하다 생각했다. 그러던 중 인터넷을 찾아보다 다음과 같은 글을 발견했다. https://blog.jetbrains.com/kotlin/2023/07/update-on-the-name-of-kotlin-multiplatform/ Update on the Name of Kotlin Multiplatform | The Kotlin Blog From now on, “Kotlin Mu..