목록Java/Spring (7)
빰_s
스프링을 사용할 때 컨트롤러에서 요청에 대한 파라미터 정보를 추가하고자 할 시, 위 세가지 어노테이션 (@ : Annotation) 이 추가된 파라미터를 사용하여 요청을 진행하게 된다.예를 들자면,@GetMapping("/api/foos")@ResponseBodypublic String getFoos(@RequestParam String id) { return "ID: " + id;} 컨트롤러에 위 메소드를 작성한 뒤 어플리케이션을 실행했을 때, id 파라미터에 입력된 값을 이용해서 API를 꾸밀 수 있다.해당 글에선 이와 같이 파라미터로 API를 꾸밀 수 있는 이 세가지 어노테이션에 대해 알아보자. 1. RequestBodyJson 데이터를 원하는 타입의 객체로 받고자 할 때 사용한다.Json 형..

우리가 웹 개발을 할 때를 넘어 인터넷을 사용할 때 우리도 모르게 항상 접하게 되는Application Programming Interface : 한 프로그램에서 다른 프로그램으로 데이터를 주고받기 위한 방법(코드)2가지 예시를 들어보며 API를 알아보자.우리(Client)가 식당을 갔을 때,그 식당의 메뉴판(API List)을 보고 주문(Method)을 하면,주방(Server)에서 주문을 받아 음식을 제공해준다.이게 우리가 웹 개발을 할때 많이 사용하는 API의 원리라고 할 수 있다. 이번엔 웹 사이트를 기반으로 예시를 한번 더 들어보겠다.우리(Client)가 네이버 웹툰 사이트에서이 사이트의 웹툰 목록(API List)를 보고 특정 웹툰을 보여달라 요청(Method)하면,웹툰 사이트(Server)에선..

서술을 시작하기 앞서, 해당 내용은 KaKao Developers의 카카오 로그인 서비스를 기반으로 서술됨을 알린다.(※ url : https://developers.kakao.com/docs/latest/ko/index) 요즘 지인과 프로젝트로 앱을 만들고 있으며, 나는 현재 백엔드 포지션을 잡고 개발을 맡고 있다.그 과정에서 필요한 기능 중 하나가 SNS 로그인인데, 크게 카카오, 네이버, 구글 애플로 잡았다. 이 중 애플을 제외한 카카오, 네이버, 구글은 다 똑같이 OAuth 2.0 기반의 로그인 방식을 사용하고 세세한 부분에서만 다르기 때문에 카카오 로그인 기능 구현 하나만 제대로 알고 간다면 다른 두 포털의 로그인 API도 무난하게 구현할 수 있을 거라고 생각한다.(실제로 본인도 카카오 로그인..

WebClient란?웹으로 API를 호출하기 위한 HTTP Client 모델WebClient의 특징싱글 스레드 & 비동기(Non-Blocking)각 요청은 Event Loop 내에 Job로써 등록됨Event Loop는 각 Job을 제공자(Worker)에게 요청한 후 결과를 기다리지 않고 다른 Job를 처리이후 제공자로부터 Callback으로 응답(Response)이 오면 해당 결과를 요청자에게 제공WebClient의 사용 배경같은 Http Client 모듈인 RestTemplate와의 비교RestTemplate : 멀티 스레드 & 동기(Blocking) (※ WebClient : 싱글 스레드 & 비동기)Client가 요청 시 큐에 쌓이고, 가용한 스레드가 있으면 이에 할당되어 요청 처리각 스레드는 동기 ..
JDK 1.5부터 추가된 기능. import 문을 사용하면 클래스의 패키지명을 생략할 수 있는 것과 같이 (ex. import java.lang.Math; => Math.max(a,b) // java.lang 을 생략할 수 있음.) static import를 사용하면 static 멤버를 호출할 때 클래스명을 생략할 수 있음. 아래는 그 예시를 보자. import static java.lang.Integer.*;// Integer 클래스의 모든 static 멤버 import static java.lang.Math.random;// Math.random()만 import. 괄호는 붙이지 않는다. import static java.lang.System.out;// 이렇게 하면 System.out을 out만으로..
AssertJ : Junit 기반 테스트 코드를 작성하는데 사용되는 라이브러리 장점 - 메서드 체이닝을 지원하기 위해 좀 더 깔끔하고 읽기 쉬운 테스트 코드 작성 가능 (Junit에서 기본적으로 제공하는 assertEquals에 비해 가독성이 좋다는 것이 장점) assertEquals(a,b); // a == b ? 같은지 : 다른지 assertThat(b).isEqualTo(a); // a == b ? 같은지 : 다른지 - 개발자가 테스트를 하면서 필요하다고 상상할 수 있는 거의 모든 메서드를 제공 라이브러리 의존성 설정 Java 8 이상 기반 프로젝트는 3.x 버전을, java 7 이하 기반 프로젝트는 2.x 버전을 사용해야함 Gradle - Java 8 이상 testCompile 'org.asser..