본문 바로가기

전체 글

(79)
Spring MVC @PathVariable, @MatrixVariable, @RequestParam 요청을 매핑할 수 있는 @PathVariable, @MatrixVariable, @RequestParam에 대해 알아본다. @PathVariable 요청 URI 패턴의 일부를 핸들러 메서드 파라미터로 받을 수 있다. @GetMapping에서 {id} 부분을 메서드의 파라미터에 매핑시켜준다. 해당 파라미터에 @PathVariable을 붙이면 된다. 만약 /hello/23이라는 요청이 들어오면 id에 23이 매핑될 것이다. 원래라면 @PathVariable에 url {id}와 같이 명시된 name을 위와 같이 적어 주어야 한다. 하나 타입 변환을 지원해주므로 주황색 박스의 변수명이 같으면 빨간색 줄을 생략할 수 있다. 테스트 /hello/1로 요청을 보냈을 때 id에 1이 들어간 것을 알 수 있다. 만약 /..
4. 트리와 그래프 Cracking The Coding Interview(코딩 인터뷰 완전분석)를 참고하여 작성하였습니다. 트리 - 트리는 노드로 이루어진 자료구조이며 사이클이 존재할 수 없다. - 트리에서의 탐색은 최악의 수행 시간과 평균 수행 시간이 크게 다를 수 있으므로 주의가 필요하다. 트리 vs 이진트리 - 이진트리는 각 노드가 최대 두 개의 자식을 갖는 트리 - 즉 모든 트리가 이진트리는 아니다. 이진 트리 vs 이진 탐색 트리 - 이진 탐색 트리는 [모든 왼쪽 자식들 왼쪽 -> 오른쪽 순서로 방문하는 것 후위 순회(post-order traversal) - 왼쪽 -> 오른쪽 -> 현재 순서로 방문하는 것 이진 힙(최소 힙, 최대 힙) - 최소 힙만 이야기하고 최대 힙은 그 반대로 생각 - 완전 이진트리이면서 부..
Spring Security OAuth 2.0, Jwt #1(Authorization Server) OAuth 2.0 동작 방식과 JWT 토큰 발급에 대한 정보는 이전게시글을 참고하시면 됩니다. 프로젝트 생성 시큐리티 적용 전 회원가입 및 기본 로직 작성을 위해 H2, Spring Web, Spring Data Jpa, Lombok만 의존성을 받아 프로젝트를 생성하였다. yaml형식이 가독성이 좋아 application.properties를 application.yml로 변경 후 DB설정 정보를 작성 하였다. Member 엔티티 생성 @NoArgsConstructor(access = AccessLevel.PROTECTED) @Getter @Entity public class Member { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private..
OAuth 2.0, JWT OAuth OAuth(Open Authorization, Open Authentication)란? 인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로 사용되는 접근 위임 개방형 표준. OAuth 2.0 Authorization Framework OAuth 1.0a을 개선하여 나온 최신의 OAuth 기술 OAuth 1.0a는 HTTPS가 필수가 아니어서 signature를 따로 생성해서 호출해야 했지만 OAuth 2.0은 Bearer 토큰 인증 방식으로 간편화 하였다. OAuth 2.0은 다양한 인증 방식을 제공한다 OAuth 2.0은 Authorization Server를 분리함으로써 인증 서버를 확장..
Spring MVC HEAD, OPTIONS HTTP Method 스프링 웹 MVC에서 기본으로 지원해주는 HEAD, OPTIONS HTTP Method를 기본으로 지원해준다. HEAD, OPTIONS Method에 대한 설명은 이전 게시글에서 작성하였다. HEAD HEAD 메서드는 GET과 동일한 요청을 하지만 응답에 본문이 없고 헤더만 존재한다. 결과를 확인해보면 Body에 아무 정보가 없는 것을 알 수 있다. OPTIONS OPTIONS로 요청은 여러 가지 종류의 지원 범위를 응답해준다. @GetMapping을 통해 GET 메서드만 허용하도록 설정하였다. 만약 여기에 OPTIONS 요청을 보내면 Allow Method에는 GET만 포함될 것이다. 결과를 확인해보면 GET이 들어가 있는 것을 알 수 있다. HEAD, OPTIONS는 Spring에서 기본으로 제공하여..
Spring MVC 미디어타입, 헤더, 매개변수 매핑 요청 매핑하기 미디어 타입과 헤더, 매개변수에 맞게 요청을 매핑할 수 있다. 원하는 타입의 요청만 처리하기 JSON 요청만 처리하고 싶을 경우 Annotaiton에 consumes 설정으로 원하는 타입을 설정할 수 있다. VALUE는 String을 리턴한다는 의미이다. 테스트 코드에서 contentType을 JSON으로 설정하고 테스트하면 테스트가 성공한다. APPLICATION_JSON, APPLICATION_JSON_VALUE 등 JSON으로만 설정하면 모두 가능하다. Content Type을 주지 않을 경우 Content-Type 헤더를 설정하지 않고 테스트 시 415(UnsupportedMediaType) 상태 응답이 발생한다. 원하는 타입으로 응답하기 응답을 TEXT로 할 경우 테스트에서 Acc..
Spring MVC HTTP Method(@RequestMapping), URL 패턴 HTTP Method와 URL 패턴 Spring Web MVC에서 사용하는 HTTP Method 매핑 방법과 URL 패턴에 대해 알아본다. 먼저 자주 사용하는 HTTP Method에 대해서 알아보자. HTTP Method GET 클라이언트가 서버의 리소스를 요청할 때 주로 사용하는 메서드이다. 브라우저에 기록이 남으며 URL에 전송하는 데이터가 표시되므로 민감한 데이터를 보내면 안 된다. 멱등성 O, 캐시 가능 HEAD GET 요청과 같지만 응답에 본문이 없고 헤더만 존재한다. 헤더를 통해 본문 정보를 유추할 때나 응답 상태 코드를 확인만 필요할 때도 유용하다. 멱등성 O, 캐시 가능 POST 클라이언트가 서버의 리소스를 수정하거나 새로 만들 때 사용한다. 서버에 리소스를 수정하거나 새로 만들 때 보내는..
프록시 패턴(Proxy Pattern) 프록시 패턴 다른 객체를 대변하는 객체를 만들어서 주 객체에 대한 접근을 제어할 수 있다. Subject Proxy를 구현하기 위해 Interface로 설계되어 있으며 RealSubject와 Proxy는 이를 구현한다. RealSubject 실제 서비스를 하는 주 객체이다. Proxy Client가 Subject에게 접근하면 Proxy에게 접근이 된다. Proxy는 접근을 제어할 수도 있고 추가 설정을 한 후 RealSubject에게 위임하여 RealSubject의 실제 서비스를 실행시킬 수 있다. 예제 Subject public interface Subject { void print(); } Subject는 주 객체와 프록시가 사용할 기능을 정의한다. ​ RealSubject​ public class ..