본문 바로가기 메뉴 바로가기

리프의 개발 블로그

프로필사진
  • 글쓰기
  • 관리
  • 태그
  • 방명록
  • RSS

리프의 개발 블로그

검색하기 폼
  • 분류 전체보기 (97)
    • 알려주는 이야기 (96)
      • 코틀린 (2)
      • 안드로이드 (43)
      • 기타 (3)
      • 스프링 부트 (16)
      • RxJava (25)
      • Flutter (7)
      • NodeJS (0)
    • 만드는 이야기 (0)
      • 개발 (0)
      • 개발일지 (0)
      • 기획 (0)
    • 말하고 싶은 이야기 (1)
      • 잡담 (0)
      • 컨퍼런스 (0)
      • 서평 (1)
    • 돌아보는 이야기 (0)
      • 회고 (0)
  • 방명록

전체 글 (97)
Spring Boot - Reative Rest Api [ 오류 처리 ]

리액티브 마이크로서비스를 만들 때 어떤 오류도 정상적으로 처리해야 됩니다. 따라서 리액터 프레임워크는 이런 오류를 처리하기 위한 메커니즘을 제공합니다. 핸들러에서 오류 찾기 핸들러를 만들 때 오류가 발생할 수 있으며 이런 오류는 리액티브 게시자 onErrorResume에서 특별한 방법으로 처리 가능합니다. @Component class CustomerHandler(private val customerService: CustomerService) { ... fun create(serverRequest: ServerRequest) = customerService.createCustomer(serverRequest.bodyToMono()).flatMap { created(URI.create("/function..

알려주는 이야기/스프링 부트 2020. 9. 9. 23:24
Spring Boot - Reative Rest Api [ 함수형 ]

RouterFunction 사용 클라이언트에서 오는 요청을 Controller로 대신 RouterFunction을 사용해 처리할 수 있습니다. @Component class CustomerRouter { @Bean fun customerRouters(): RouterFunction = router { "/functional".nest { } } } 새 컴포넌트로 생성했기 때문에 빈이 노출되면 컴포넌트 스캔을 통해 새로운 방식의 RouterFunction을 만들고 경로를 정의합니다. 위의 코드 같은 경우에는 /functional 경로의 모든 요청을 처리합니다. 코드를 아래와 같이 수정하였습니다. @Component class CustomerRouter { @Bean fun customerRouters():..

알려주는 이야기/스프링 부트 2020. 9. 9. 21:06
Spring Boot - Reative Rest Api [ 리액티브 서비스 ]

구독자와 게시자 리액티브 프로그래밍의 핵심 구성 요소에는 구독과 게시가 있습니다. 리액티브 프로그래밍은 이벤트가 감지되면 필요한 사용자에게 전송되는 이벤트 모델을 기반으로 합니다. UI에서 버튼을 누르는 것과 같은 이벤트를 수신하고자 할 때 정의하는 것이 구독자입니다. 반대로 이벤트를 생성하는 것이 게시자라고 생각하면 됩니다. 스프링에서는 리액터 프레임워크를 사용해서 리액티브 마이크로서비스를 만듭니다. 컨트롤러는 결과의 게시자가 될 수 있으며, 스프링은 서비스를 사용하는 모든 사용자에게 데이터를 보내기 위해 이벤트를 구독합니다. 이 데이터는 리액티브 스트림 사양에 정의된 대로 리액티브 스트림으로 전송돼 논블로킹의 배압을 제공합니다. Mono 리액터에서는 모노라는 클래스를 통해 하나의 결과를 보내는 게시자..

알려주는 이야기/스프링 부트 2020. 9. 9. 08:18
Spring Boot - Reative Rest Api [ 스프링 웹플럭스 ]

스프링 웹플럭스 프로젝트 만들기 넌리액티브 마이크로서비스를 마이그레이션하기 스프링 웹플럭스란? Netty라는 새 애플리케이션 서버를 사용해 리액티브 마이크로서비스를 만들 수 있는 컴포넌트입니다. 리액티브 스트림 패턴을 구현하기 위해 리액터 프레임 워크를 광범위하게 사용합니다. 스프링 웹플럭스 프로젝트 생성하기 https://start.spring.io/ 위와 같이 세팅을 하고 애플리케이션을 다운로드합니다. 이제 상단의 실행을 클릭하거나 Terminal에서 아래 작업을 실행합니다. mvnw spring-boot:run 그러면 실행이 되고 로그에 아래와 같이 표시되는 것을 확인하여 네티를 이용해 요청을 처리할 준비를 합니다. 네티 Netty는 넌블로킹 I/O 작업을 수행할 수 있게 하는 Client-Serv..

알려주는 이야기/스프링 부트 2020. 9. 8. 16:42
Spring Boot - Rest Api 예외 처리

고객 정보를 찾을 수 없어서 {"error": "404 NOT FOUND"} 형태로 반환하는 예제입니다. JSON 없이 예외처리 { "id": 4, "name": "test", } 위와 같이 POST에 이상한 데이터를 넣거나 형식을 지키지 않으면 아래와 같이 스프링이 자동으로 예외 처리를 해줍니다. { "timestamp": "2020-09-08T03:12:11.418+00:00", "status": 400, "error": "Bad Request", "message": "", "path": "/customer" } 이때 @ControllerAdvice와 @ExceptionHandler 어노테이션을 사용해 예외 처리를 해줄 수 있습니다. @ControllerAdvice class ErrorHandler ..

알려주는 이야기/스프링 부트 2020. 9. 8. 12:52
Spring Boot - JSON에서 Null 처리

data class에서 데이터의 기본 값을 null로 주면 val telephone: Telephone? = null 아래와 같이 데이터가 없을 땐 null값을 받게 됩니다. [ { "id": 1, "name": "im", "telephone" : null }, { "id": 2, "name": "leaf", "telephone": { "countryCode": "+82", "telephoneNumber": "56453423" } }, { "id": 3, "name": "imleaf", "telephone" : null } ] 이때 null이면 데이터를 표시하지 않으려면 아래와 같이 하면 됩니다. 1. Jackson 어노테이션 사용 @JsonInclude(JsonInclude.Include.NON_NUL..

알려주는 이야기/스프링 부트 2020. 9. 8. 11:12
Spring Boot - Http 상태 처리

200 OK 응답뿐만 아니라 404 NOT FOUND 등 다양한 상태 코드를 제공하도록 하기 위해 사용합니다. 예를 들어 아래 코드를 보면 됩니다. @GetMapping(value = ["/customer/{id}"]) fun getCustomer(@PathVariable id: Int) = ResponseEntity(customerService.getCustomer(id), HttpStatus.OK) GetMapping이 기본적으로 HttpStatus.OK를 수행합니다. 이것을 적절하게 바꿔보겠습니다. GET @GetMapping(value = ["/customer/{id}"]) fun getCustomer(@PathVariable id: Int) : ResponseEntity { val custome..

알려주는 이야기/스프링 부트 2020. 9. 8. 11:04
이전 1 2 3 4 5 ··· 14 다음
이전 다음
공지사항
최근에 올라온 글
TAG
  • rest api
  • 안드로이드
  • TTS
  • 코틀린
  • jdk
  • PowerMode
  • 영진닷컴
  • 환경변수
  • Anko
  • VisualStudio
  • SharedPreference배열저장
  • Spring
  • Toast메시지
  • 하루 만에 배우는 안드로이드 앱 만들기
  • AndroidStudio
  • 자바
  • Jitpack
  • intellij
  • STT
  • 안드로이드 라이브러리
  • sharedpreference
  • RxJava
  • jdk설치
  • Kotlin
more

Blog is powered by Tistory / Designed by Tistory

티스토리툴바