- REST
[API] RESTful API 아키텍처
RESTful API 아키텍처 REST(Representational State Transfer)는 Web을 개발하는데 지침을 제공하고 그 구조를 설명하기 위해 만들어진 소프트웨어 아키텍처 스타일이다. Restful API의 핵심은 URL을 Endpoint로 바라보는 것이 아니라 하나의 자원으로 바라보는 것이고, 일관성을 가져서 예측 가능하게 되는 것이다. 아래는 Rest 아키텍처에서 가지는 특성이라고 한다. 1.1 Stateless 무상태성 클라이언트-서버 요청에서 클라이언트 정보가 저장되지 않고, 각 요청은 분리되어야 한다. 1.2 Client-Server 구조 클라이언트, 서버, 리소스로 구성되어 있으며 HTTP로 요청이 이루어진다. 1.3 데이터 캐싱 캐싱이 가능하도록 하여 클라이언트-서버간 상호작용을 최소화한다. 1.4 일관된 인터페이스 리소스 식별이 가능해야 하며, 클라이언트에 전송된 표현과 구분되어야한다. 그리고 수신하는 표현을 통해 리소스가 조작되어야 한다. 클라이언트는 자기 서술적 메시지에 정보를 어떻게 처리해야 할지 설명하는 정보가 충분히 포함되어야 한다.(Content-type, method, encoding 등) 1.5 레이어드 아키텍처 지원 서버는 계층 구조(보안, 로드밸런싱 등)로 구성하는 계층화된 시스템을 가질 수 있다. 1.6 코드 온 디맨드 요청을 받으면 서버에서 클라이언트로 실행 가능한 코드를 전송하여 클라이언트 기능을 확장할 수 있다. 2.메서드와 상태 정리 Restful API에서는 자원에 대한 행위를 HTTP 메서드를 통해 나타내어 서버에서 이 메서드에 따라 처리하고, ...2025-06-19 - HTTPhttps
[HTTP] HTTPS 란?
HTTPS 란? 이전 포스팅에서 HTTP에 대해서 썼다. 하지만 대부분 보안때문에 HTTPS를 필수로 사용한다. 그래야 네트워크 경유지에서 패킷이 탈취당해도 HTTP 메시지가 암호화되어있어 내용을 알 수 없기 때문이다. 암호화 방식은 크게 2가지로 나뉜다. 대칭키 암호화와 비대칭키 암호화 방식이다. HTTPS를 암호화하는 방식은 대칭키와 비대칭키 암호화를 둘다 쓰는 방식이라고 볼 수 있다. 1.1 대칭키 암호화 대칭키 암호화는 암호화와 복호화에 같은 키를 사용한다. 그래서 구현이 간단하고 빠르지만, 키가 탈취당하면 키를 획득한 사람이 암호화와 복호화가 모두 가능해서 키 분배에 어려움이 있다. 대칭키 암호화에 가장 많이 쓰이는 알고리즘은 AES 알고리즘이다. 1.2 비대칭키 암호화 비대칭키 암호화는 공개키(Public key)로 암호화하고 복호화는 개인키(Private Key)로 한다. 그리고 그 반대 역시 가능하다. 개인키로 암호화하면 공개키로 복호화할 수 있으며 두 키는 쌍을 이룬다. 주로 서버에서만 복호화하고 클라이언트에서 암호화하기 때문에 공개키를 아무에게나 줘도된다. 왜냐하면 암호화한 데이터는 서버에서만 복호화할 수 있기 때문이다. 비대칭키 암호화 방식은 또 다른 방식으로도 응용된다. 만약 공개키가 검증되었다면 이를 통해서 암호화된 정보의 출처 검증이 가능하다. 만약 어떤 데이터를 A회사가 제공한 공개키로 복호화에 성공한다면 데이터의 출처가 A사임을 알 수 있다. 또한 복호화에 실패한다면 A사의 데이터가 아님을 알수도 있다. 이런 공개키가 어떤 회사의 공개키인지 검증해주는 기관을 CA(Certifica...2025-06-16 - HTTP
[HTTP] HTTP란
HTTP(Hypertext Transfer Protocol) 최근 면접을 보면서 기초들을 많이 까먹었고 제대로 정리되어 있지 않다고 느꼈습니다. 그래서 기초부터 다시 처음 배우는 마음가짐으로 글을 작성합니다... ㅜㅜ HTTP는 리소스들을 가져올 수 있도록 해주는 프로토콜이다. 특히 웹에서 이루어지는 데이터 교환의 기초이며, 주로 Server-Client간의 통신 프로토콜이다. 보통 웹 브라우저(크롬, 사파리 등)가 Client이고 Tomcat, Nginx 같은 것들이 Server 역할을 한다. 웹 서버는 리소스를 관리하고 제공한다. 웹 서버의 정적 파일을 전달해줄 수도 있지만, 누가 언제 요청했는지에 따라 동적으로 데이터를 전달해줄 수 있다. 예를들면 로그인시에 유저별로 받아오는 닉네임 정보는 다를 것이다. 그리고 이 웹 클라이언트는 용도에 맞는 웹서버를 통해 이러한 데이터들을 전달받는다. 1.1 MIME(미디어 타입, Content-type) MIME(Multipurpose Internet Mail Extensions)는 각기 다른 메일 시스템 사이에서 메시지가 오갈 때 겪는 문제점을 해결하기 위해 설계되었습니다. 더 자세하게는 각 메일 시스템이 자기 방식대로 첨부파일을 인코딩 처리하기 때문에, 어떤 파일인지와 인코딩 방식을 지정하여 호환되도록 만들기 위함이였습니다. HTTP통신에서도 다양한 유형의 파일을 전달하기 때문에 전달할 데이터에 대해서 MIME 타입을 통해 확인가능 하도록 만들어야 했습니다. 그래서 HTTP에서는 Content-type(데이터 형식), Content-length(데이터 크기), C...2025-06-10