본문 바로가기

분류 전체보기

(20)
[HTTP]HTTP 메서드 API URI를 설계함에 있어서 가장 중요한 것은 리소스 식별이다. 여기서 리소스에 대해서 간략하게 알아보자면 회원을 등록/수정/조회/삭제하는 API를 개발할 때 등록/수정/조회/삭제를 하는 주체가 되는 회원이 리소스이다. 이러한 리소스를 이용해 URI를 설계를 하게 되면 리소스를 URI에 매핑을 해주고 리소스와 해당 리소스를 대상으로 하는 행위를 분리시킨다. 리소스 : 회원 행위 : 등록, 수정, 조회, 삭제 등등 이제부터는 리소스를 이용한 HTTP 메서드 종류들을 알아보도록 하자 GET 리소스를 조회 서버에 전달하고자 하는 데이터는 query(쿼리 파라미터, 쿼리 스트링)를 통해서 전달 메시지 바디를 사용해서 데이터를 전달할 수 있지만, 지원하지 않는 곳이 많기에 권장하진 않는다. POST 요청 데이..
[HTTP]HTTP의 정의, 특징 및 메시지의 구조 HTTP란? Hyper Text Transfer Protocol의 약자로 문서 간의 링크를 전송하는 프로토콜이다. HTTP 메시지에 HTML, TEXT, 이미지, 음성, 영상, 파일, JSON, XML 등등 거의 모든 형태의 데이터가 전송 가능하며 서버 간에 데이터를 주고받을 때도 대부분 HTTP를 사용한다. 현재 가장 많이 사용하는 HTTP/1.1과 HTTP/2 버전은 TCP를 기반으로 하며 HTTP/3은 성능 개선과 함께 UDP를 기반으로 사용한다. HTTP 특징 클라이언트 서버 구조 Request, Response 구조 클라이언트는 서버에 요청을 보내고 응답을 대기하고, 서버가 요청에 대한 결과를 만들어서 응답을 보낸다. 무상태 프로토콜 서버가 클라이언트의 상태를 보존하지 않는다. 장점 : 서버 확..
[HTTP]URI URL URN URI URI는 Uniform Resource Identifier의 약자로 리소스를 식별하는 통합된 방법이라는 뜻을 갖는다. 여기서 리소스를 식별하는 것은 사람들 개개인을 주민번호로 식별하듯이 자원을 식별하는 것이다. URI는 로케이터(Locator), 이름(Name) 또는 둘 다 추가로 분류될 수 있는데 이것들을 각각 URL, URN이라고 하며, URL, URN은 URI에 속하는 부분집합이라고 볼 수 있다. URL URL은 Uniform Resource Locator의 약자로 리소스가 있는 위치를 지정해 준다. 위치 즉 URL은 변할 수가 있다. url의 문법 scheme://[userinfo@]host[:port][/path][?query][#fragment] - scheme : 주로 프로토콜(어떤 ..
[Lombok] IntelliJ Lombok 설치, 설정 Lombok이란? Java의 라이브러리로 반복되는 메서드를 Annotation을 사용해서 자동으로 작성해 주는 라이브러리다. ex) getter, setter, toString 등등 아래 이미지를 통해서 Lombok 라이브러리를 IntelliJ에서 추가하는 방법을 알아보도록 하자 * 필자는 현재 PC가 ios 운영체제이므로 ios환경으로 예시를 들어보겠다. Lombok 라이브러리 추가 과정 1. Lombok 라이브러리 추가 gradle dependencies { ... // lombok 라이브러리 추가 시작 compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' ... } maven ... org.proje..
[Java] 객체지향 프로그래밍 5가지 설계의 원칙(SOLID) 객체지향 프로그래밍 설계에 있어서 클린코드로 유명한 로버트 마틴이 좋은 객체지향 설계의 5가지 원칙을 정리했는데 각각 5가지 원칙 이름의 앞글자들을 딴 SOLID이다. 1. SRP(Single Responsibility Principle) - 단일 책임 원칙 한 클래스는 하나의 책임을 가져야 한다. 하나의 책임이라는 것은 모호하다. 클 수도 있고, 작을 수도 있다. 문맥과 상황에 따라 다르다. 중요한 기준은 변경이다. 변경이 있을 때 파급 효과가 작으면 단일 책임 원칙을 잘 따른 것이다. 예) UI 변경, 객체의 생성과 사용을 분리 2. OCP(Open/Closed Principle) - 개방/폐쇄 원칙 소프트웨어 요소는 확장에는 열려있으나 변경에는 닫혀 있어야 한다. 다형성을 활용해 본다. 인터페이스를..
[Spring] 빈 스코프 빈 스코프란? 빈 스코프는 빈이 생성되어 관리되는 범위의 뜻으로 스프링 빈은 싱글톤, 프로토타입, 웹 관련 스코프(request, session, application)와 같은 다양한 스코프를 지원하며 각각의 특징은 아래와 같다. 싱글톤 : 기본 스코프, 스프링 컨테이너의 시작과 종료까지 유지되는 스코프이다. 프로토타입 : 스프링 컨테이너는 프로토타입 빈의 생성과 의존관계 주입까지만 관여하고 더는 관리하지 않는 매우 짧은 범위의 스코프이다. 웹 관련 스코프 request : 웹 요청이 들어오고 나갈 때까지 유지되는 스코프이다. session : 웹 세션이 생성되고 종료될 때까지 유지되는 스코프이다. application : 웹의 서블릿 컨텍스트와 같은 범위로 유지되는 스코프이다. 싱글톤의 경우에는 이전에..
[Spring] 빈 생명주기 콜백 빈 생명주기 콜백 시작 애플리케이션 시작 시점에 필요한 연결을 미리 해두고 애플리케이션 종료 시점에 연결을 모두 종료하는 작업을 진행하려면 객체의 초기화와 종료 작업이 필요하다. 스프링을 통해서 이러한 초기화와 종료 작업이 어떻게 진행되는지를 알아보자 public class NetworkClient { private String url; public NetworkClient() { System.out.println("생성자 호출, url = " + url); connect(); call("초기화 연결 메시지"); } public void setUrl(String url) { this.url = url; } // 서비스 시작 시 호출 public void connect() { System.out.print..
[Spring] 의존관계 자동 주입 다양한 의존관계 주입 방법 의존관계 주입에는 크게 4가지 방법이 있다. 생성자 주입 수정자 주입(setter 주입) 필드 주입 일반 메서드 주입 1. 생성자 주입 생성자를 통해서 의존관계를 주입받는 방법이다. 특징 생성자 호출 시점에 딱 1번만 호출되는 것이 보장된다. 불변, 필수 의존관계에 사용 생성자가 딱 1개만 있으면@Autowired를 생략해도 자동 주입된다. 물론 스프링 빈에만 해당한다. 2. 수정자 주입(setter 주입) setter라 불리는 필드의 값을 변경하는 수정자 메서드를 통해서 의존관계를 주입하는 방법이다. 특징 선택, 변경 가능성이 있는 의존관계에 사용 자바 빈 프로퍼티 규약의 수정자 메서드 방식을 사용하는 방법이다. 3. 필드 주입 필드에 바로 주입하는 방법이다. 특징 외부에서 ..