728x90 분류 전체보기126 @RestControllerAdvice로 ExceptionHandling 하기 ErrorCode api에서 사용하는 모든 에러코드를 모아 놓은 곳입니다. @Getter @RequiredArgsConstructor public enum ErrorCode { SERVER_ERROR(500, "서버 에러", 5000); private final int status; private final String message; private final int code; } status HttpStatus의 value 값 message 클라이언트에 보내줄 에러 메세지 code 해당 ErrorCode가 가지는 고유한 에러 매핑코드 ApiException RuntimeException을 상속받는 구현체. 실제로 에러를 발생시키는 Exception 객체이다. IllegalArgumentException.. 2020. 7. 15. Api 응답 객체 만들기 rest api를 작성하면서 api 인터페이스의 응답을 확장가능하도록 만들기 위한 응답 객체를 생성해보겠습니다. 대표적으로 사용하는 응답객체는 ResponseEntity가 존재합니다. api의 응답에 대한 상태(status), 내용(body), 헤더(header) 정보들을 담을 수 있습니다. public class ResponseEntity extends HttpEntity { private HttpHeaders headers; private T body; private Object status; }기존에는 해당 내용을 그대로 사용하였지만 회사마다 각각의 응답 프로토콜이 다르다는 것을 알게 되었습니다. 오늘은 회사에서 사용하는 코드를 조금 변형하여서 프로젝트에 적용해보도록 하겠습니다. Response p.. 2020. 7. 15. docker-compose 사용시 /usr/bin/env: ‘sh\r’: no such file or directory 에러 얼마전 사이드 프로젝트 환경 세팅하기 위해서 docker compose를 사용하면서 위와 같은 이슈가 발생했습니다. 개인적으로 사용하는 노트북이 맥 환경이었고 회사에서 잠깐 테스트로 작성하던 도중 발생한 이슈입니다. 문제 docker compose 실행 이후 아래와 같은 이슈 발생 /usr/bin/env: ‘sh\r’: no such file or directory 에러 원인 원인은 소스코드의 개행문자(줄바꿈) 처리가 OS에 따라 상이하다는 것입니다. 윈도우의 경우는 \r\n이고 유닉스 계열은 \n이 됩니다. 그래서 윈도우 환경의 소스코드를 docker compose로 생성된 리눅스 환경에 배포할 때, 개행문자를 잘못 인식하게 됩니다. 그래서 에러메세지 중 \r이 나오게 되는데 이것은 윈도우에서 생성된 .. 2020. 7. 15. 역시 좋은 회사는 좋은 geek을 원한다 최근 규모가 큰 회사들의 인터뷰 후기들을 보면서 공통적으로 느끼는 것은 어느 한 분야를 끝장내는 geek을 원한다는 것이다. 심지어 네이버의 후기를 보면 문제해결을 위해 커널까지 분석하는 것을 종종 볼 수 있다. 예전 처음 코딩을 시작했었을 때 읽었던 coding-interview-university로 유명한 John Washam의 Why I studied full-time for 8 months for a Google interview라는 글이 생각이 났다. 내용을 보면 대부분이 데이터구조와 알고리즘 그리고 컴퓨터 사이언스에 대한 내용을 깊이 있게 학습했다는 것을 알 수 있었다. 어느정도 깊이 팠느냐하면 자기만큼 공부할 필요가 없다고 할 정도로 경고할 정도였다. 제목에서 보다시피 8개월간의 시간을 투자.. 2020. 7. 9. 스프링 서큐리티 내부 동작 오늘은 스프링 서큐리티의 동작과정에 대해 정리해볼까 합니다. 사실 내부동작을 모른채로 튜토리얼만 따라하다보면 비슷한 개념의 Jwt나 OAuth 동작 또한 새로운 것들 처럼 보입니다. 하지만 이들은 모두 스프링 서큐리티의 핵심 동작과정에서 크게 벗어나지 않습니다. 그럼 내부의 동작 원리를 살펴보도록 하겠습니다. Authentication vs Authorization 먼저 용어정리를 하는 것이 좋습니다, 처음에 가장 헤깔렸던 개념이 Authentication과 Authorization입니다. 간단히 말하면 다음과 같습니다. Authentication : 로그인하는 유저의 아이디 비밀번호가 맞는지 확인 Authorization : 로그인한 유저가 입장할 수 있는 권한이 있는지 확인 즉, Authorizati.. 2020. 7. 8. 스프링부트 h2 설정 Embedded 데이터베이스 1. Dependency build.gradle runtimeOnly 'com.h2database:h2' 2. Configuration application.yml spring.h2.console.enabled: true 3. h2 접속 해당 주소로 h2 console에 접근합니다. localhost:8080/h2-console 스프링부트는 내부적으로 아래와 같은 설정을 자동으로 합니다. 그러므로 화면과 똑같은 값이 있는지 확인하셔야 합니다. Driver Class : org.h2.Driver JDBC URL : jdbc:h2:mem:testdb Username : sa Password : 4. 로그 설정 application.yml logging.level.org.hiber.. 2020. 7. 8. 이전 1 ··· 9 10 11 12 13 14 15 ··· 21 다음 728x90