본문 바로가기

728x90

Backend/Spring & SpringBoot

(27)
RestTemplate 사용법 (2) Naver API 사용하기 프로젝트를 작업하다 보면, Open API를 사용해야하는 경우가 많다. RestTemplate를 사용하여 간단하게 연동하는 법에 대해서 알아보겠다. Naver 지역 검색 API 연동하는 법에 대해서 알아보겠다. 지역 - Search API 지역 NAVER Developers - 검색 API 지역 검색 개발가이드 검색 > 지역 네이버 지역 서비스에 등록된 각 지역별 업체 및 상호 검색 결과를 출력해주는 REST API입니다. 비로그인 오픈 API이므로 GET으로 호출 developers.naver.com 호출예시 // 네이버 검색 API 예제 - blog 검색 import java.io.*; import java.net.HttpURLConnection; import java.net.MalformedURLE..
RestTemplate 사용법 (1) - getForObject(), getForEntity() 백엔드 개발을 할때는 Server의 입장이 되어서 API를 제공해보는 것이 중요함. Client가 되어서 어떻게 실제로 서버에게 데이터를 던져주고, 받아오는지 알아보겠다. 1. 기본적인 RestTemplate사용 [GET]- getForObject() , getForEntity(); [Client] @RestController @RequestMapping("/api/client") public class ApiController { private final RestTemplateService restTemplateService; public ApiController(RestTemplateService restTemplateService) { this.restTemplateService = restTemp..
[스프링 인 액션 5장] Spring 자동구성, Logback 활용 Chap05 구성속성 이해하기 📖 Chap05.1 에서 배우는 내용 🏁 [목표] 스프링 자동구성에 대해서 알아보고, slf4j logback에 대해서 🏁 [익혀야 되는 개념] 1) 자동구성 ? 2) 로깅? logback, slf4j, log4j ? 5.1 자동-구성 세부 조정하기 5.1.0 두가지 형태의 구성 스프링 에는 두가지 형태의 구성이 있다. @Bean 애노테이션이 지정된 메서드는 사용하는 빈의 인스턴스를 생성하고 속성 값도 설정한다. 1) 빈 연결 : 스프링 애플리케이션 컨텍스트에서 빈으로 생성되는 애플리케이션 컴포넌트 및 상호 간에 주입되는 방법을 선언하는 구성 2) 속성 연결 : 스프링 애플리케이션 컨텍스트에서 빈의 속성 값을 설정하는 구성 // 스프링에 내장된 H2 DB를 DataSourc..
[스프링 인 액션 3장] Spring JDBC 사용 Chap03 데이터로 작업하기 📖 Chap03.1 에서 배우는 내용 🏁 [목표] Spring JDBC 개념과 사용법 익히기 🏁 [익혀야 되는 개념] 1) Spring 에서 JDBC를 이용하여 Database를 다루는 큰 그림 2) Plain JDBC와 Spring JDBC의 차이, Spring JDBC를 사용하는 이유? 3) Datasource의 Connection Pool 개념 4) JdbcTemplate을 이용하여 CRUD동작 구현하기 5) SimpleJdbcInsert 사용법 (+objectMapper 개념) 3.1.0 Spring에서 Database를 다루는 큰그림 client가 웹으로 request를 보내면 servlet으로 구현된 controller가 request를 받아, service 클래..
Spring Boot Test하기 [1] 테스트 TDD (Test-Driven Development) - 테스트 주도 개발에서 사용하지만, 코드의 유지보수 및 운영환경에서의 에러를 미리 방지하기 위해 단위별로 검증하는 테스트 프레임워크 단위테스트 - 작성한 코드가 기대하는 대로 동작을 하는지 검증하는 절차 JUnit - java기반의 단위 테스트를 위한 프레임워크 - Annotation 기반으로 테스트를 지원 Assert를 통하여 검증함. 서버를 구동하지 않고 컨트롤러만 단독으로 테스트하거나 컨트롤러와 연관된 비지니스 컴포넌트를 실행하지 않고 컨트롤러만 독립적으로 테스트 할 수 있는 환경이 필요. # 의존성 org.springframework.boot spring-boot-starter-test test # Controller : 뷰이름을 리턴..
Hypermedia-Driven RESTful Web Services : Spring HATEOAS 구현방법 [2] Spring에서 Hateoas를 구현하는 방법에 대해서 알아보겠다. ## 환경 : Spring Boot + IntellJ + Maven 0) Dependency org.springframework.boot spring-boot-starter-hateoas 1) Link 를 만들기 위하여 WebMvcLinkBuilder 활용 Link link = new Link("http://localhost:8080/api/actors/1"); // 링크를 만들때 위와 같이 하드코딩을 하지 않도록 WebMvcLinkBuilder를 사용 // # WebMvclinkBuilder를 사용하여 링크를 만든다. // Link Object에는 rel와 href를 넣는다. // rel : 이름 / href : 실제 링크 // lin..
Hypermedia-Driven RESTful Web Services : HATEOAS란? [1] Hateoas의 개념에 대해서 알아보고, Spring에서 어떻게 구현하는지에 대해서 알아보겠다. REST API에는 등급이 존재한다. REST API의 등급 중 가장 높은 등급이 Hateoas라고 보면된다. 아래 표를 살펴보면, 일반적인 프로젝트에서는 구현하는 Rest API의 레벨은 Lvl2라고 보면된다. Lvl2는 Resources와 HTTP메서드를 사용한다. Lvl3, Hateoas는 Lvl2에 추가적인 Link를 가지고 있다. 이 Link를 통해 네비게이션이 가능하다. Request를 보면, Lvl2와 별 차이가 없어 보이지만, Response를 보면 JSON에 HAL라는 추가적인 링크가 있는 것을 알 수 있다. => 완벽한 RestApi를 사용하기 위해서는 Hateoas를 사용해야 한다. Hyp..
[Spring Security] Spring Boot에서 Spring Security 설정하기 (Database) # 구현 과정 1) Database를 사용하여 Role에 따라 Access Control 하도록 한다. - User JPA Entity, Role JPA Entity 가 필요하다. (N:M 매핑 관계로 함) - User와 Role entity와 관계된 Spring Data JPA repository를 만든다. 2) UserDetailsService와 UserDetails를 만든다. - UserDetailsService 인터페이스에서 정의된, loadUserByUsername()를 구현한다. - UserDetails 인터페이스에 User Entity, Role Entity를 넣어주는 것이 UserDetailsService의 loadUserByUsername 메서드이다. 3) Spring Security 설..

728x90