일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 2981
- 프로그래머스
- Greedy
- 코딩테스트
- applicationeventpublisher
- 2018 KAKAO BLIND RECRUITMENT
- 파이썬
- springboot
- BFS
- 라이브템플릿
- java
- brute force
- algorithm
- codility
- Dijkstra
- 문자열
- HTTP
- spring security
- counting elements
- 소수
- 최단경로
- 알고리즘
- error
- API
- beandefinitionstoreexception
- Python
- 탐욕법
- Spring
- javascript
- 백준
- Today
- Total
목록Java/Spring Framework (8)
Altiora Petamus
영화 정보를 가져오는 OMDb API 를 사용해보던 중에 DTO로 정보를 처리하고 있었다. 이 과정에서 약간의 문제가 있었는데, 평소 나는 camelCase 방식을 사용하여 프로젝트를 작성하지만 api에서는 앞글자를 대문자로 JSON 데이터를 제공하고 있다. { "Title": "Frozen", "Year": "2013", "Type": "movie", "Poster": "https://m.media-amazon.com/images/M/MV5BMTQ1MjQwMTE5OF5BMl5BanBnXkFtZTgwNjk3MTcyMDE@._V1_SX300.jpg", "imdbID": "tt2294629" } private String title; private String year; private String imdbI..
Intro REST API 의 다양한 사용법에 대해 알아봅니다. 모든 테스트는 Postman 을 활용해 진행했습니다. HTTP Request 기본 사용법 @RestController @RequestMapping("/mapping/users") public class MappingClassController { @GetMapping public String user() { return "get users"; } @PostMapping public String addUser() { return "post user"; } @GetMapping("/{userId}") public String findUser(@PathVariable String userId) { return "get userId=" + user..
Intro REST API 에 대해 학습하면서 정리하는 글입니다. HTTP Request mapping 이하 모든 API 는 "ok" 라는 텍스트를 반환합니다. 기본 요청 @RestController public class MappingController { private Logger log = LoggerFactory.getLogger(getClass()); @RequestMapping("/hello-basic") public String helloBasic() { log.info("helloBasic"); return "ok"; } } "/hello-basic" or "/hello-basic/" 모두 허용 HTTP method 모두 허용 : GET, POST, PUT, PATCH, DELETE, HE..
어떤 데이터베이스를 사용할지 정해지지 않은 상황에서 당장 Rest api 를 만들기 시작해야한다면 어떤 방법을 사용할 수 있을까요? 간단한 CRUD는 in-memory DB 를 구현하여 작성해놓으면 추후 DB가 정해졌을 경우 바로 교체하여 사용할 수 있습니다. 사실 테스트 용도로 자주 사용되는 H2 데이터베이스를 사용해도되지만, 직접 구현하며 흐름을 알아보도록 하겠습니다. 우선 lombok, Spring Web 정로만 선택하여 gradle 프로젝트를 생성해주겠습니다. db package 아래에 MemoryDbRepository interface 를 만들어줍니다. public interface MemoryDbRepositoryIfs { // Create T save(T entity); // Read Opt..
시큐리티를 사용하기 위해서는 의존성을 추가해야 합니다. springboot-starter 에 포함되어 있으므로 프로젝트 생성 과정에서 Spring security 를 선택해주면 build.gradle 에 작성되고 사용할 수 있게 됩니다. 사용법에 집중하기 위해서 패키지 생성 및 의존성을 추가하는 과정은 과감히 생략합니다. Default 화면 확인해보기 시큐리티는 기본적으로 로그인 화면을 제공합니다. 다음과 같은 클래스들을 작성해주고 main 을 실행켜보겠습니다. @SpringBootApplication public class BasicTestApplication { public static void main(String[] args) { SpringApplication.run(BasicTestApplic..
스프링 시큐리티란? 시큐리티가 필요한 이유 웹사이트는 각종 서비스를 하기 위한 리소스와 서비스를 사용하는 유저들의 개인정보를 가지고 있습니다. 이들 리소스를 보호하기 위해서 일반적으로 웹사이트는 두가지 보안 정책을 설정해야 합니다. 1. 인증 (Authentication) 사이트에 접근하는 사람이 누구인지 시스템이 알아야 합니다. 익명사용자(anonymous user)를 허용하는 경우도 있지만, 특정 리소스에 접근하거나 개인화된 사용성을 보장 받기 위해서는 반드시 로그인하는 과정이 필요하겠죠. 로그인은 보통 username / password 를 입력하고 로그인하는 경우와 sns 사이트를 통해 인증을 대리하는 경우가 있습니다. UsernamePassword 인증 Session 관리 토큰 관리 (sessi..
AOP? 관점 지향 프로그래밍 (Aspect Oriented Programing)의 약자로, 메인 비즈니스 로직에서 공통된 기능을 분리하여 별도로 관리할 수 있게 한다. 사용해보기 요구사항 REST API 개발 시 컨트롤러나 특정 메소드가 동작하는 시간을 측정하여 로그로 남겨야한다. 과정 간단한 api를 만들어주고 @RestController @RequestMapping("/api") public class RestApiController { @GetMapping("/get/{id}") public String get(@PathVariable Long id, @RequestParam String name) { return id + " " + name; } @PostMapping("/post") publi..
ApplicationEventPublisher Spring의 ApplicationContext가 상속하는 인터페이스 중 하나 Design Pattern 중 하나인 옵저버 패턴의 구현체 이벤트를 발생하는 Publisher와 이를 감시하는 Observer(or Subscriber) 사이의 결합도를 낮추면서 이벤트를 Observer에게 전달하고 싶을 때 사용하게 된다. 사용 파일 업로드를 시도한다고 가정할 때, 성공과 에러를 구분해서 이벤트를 감지하고 결과를 간단한 RESTful API를 사용하여 내려주도록 해보자. Event import lombok.Builder; import lombok.Getter; import java.util.Map; import java.util.UUID; @Getter @Buil..