boot 13

Kotlin Springboot Rest API 만들기 6 - 테스트 코드 작성, exception handling, Spring Security 인증 인가 적용하기

이전 포스팅에서는 jwt token, SpringSecurity로 인증 인가, 로그인을 추가했습니다. 이번 포스팅에서는 이전 포스팅에서 언급했던 1. Jwt 토큰 없이 api를 호출하였을 경우 2. 형식에 맞지 않거나 만료된 Jwt 토큰으로 api를 호출한 경우 3. Jwt 토큰으로 api를 호출하였으나 해당 리소스에 대한 권한이 없는 경우 내용과 필터 적용 후의 테스트 코드를 작성하고 exception handling을 진행하겠습니다. 전체 코드는 여기에 있습니다. 테스트를 하기 위해서 postman으로 호출하는 것이 너무 귀찮아서 테스트 코드를 추가하게 되었습니다. 지금까지 만든 API는 signIn, signUp, helloWorld 입니다. 그 외에 다른 API는 만들지 않았습니다. signIn,..

Kotlin 2023.02.05

Kotlin Springboot Rest API 만들기 5 - jwt token, Spring Security로 인증 인가, 로그인 만들기

이전 포스팅에서는 Entity를 토대로 회원가입을 만들어보았습니다. 동시에 i18n을 포함한 Common Response body를 만들었습니다. 이번 포스팅에서는 jwt token, SpringSecurity로 로그인 만들기를 할겁니다. 전체 코드는 여기에 있습니다. API를 만들고 인터넷에 열어두면 위험 소지가 있습니다. 로그인, 회원가입 이외에 다른 API를 그냥 호출하면 401 오류가 나오게 설정하고 headers에 jwt 기반의 token 을 넣어야만 호출이 되도록 설정할 예정입니다. 여기서 사용될 Filters는 아래와 같습니다. A Review of Filters Spring Security는 공격에 대한 인증, 권한 부여 및 보호 기능을 제공하는 프레임워크입니다. SpringSecurity..

Kotlin 2023.01.23

Kotlin Springboot Rest API 만들기 4 - 회원가입, common response body 만들기

이전 포스팅에서는 앞으로 만들 Entity 구조를 간략하게 설명하고 예시로 우아하게 Entity를 구성하는 방법에 대해 작성하였습니다. 불필요한 쿼리는 사용하지 않는게 좋으니까요! 이번 포스팅에서는 위 Entity를 토대로 회원가입을 만들어보겠습니다! 동시에 i18n을 포함한 Common Response body를 만들어보겠습니다! + 약간의 SpringSecurity가 추가되어 있습니다. 다음 포스팅에서 다루겠습니다. 전체 코드는 여기에 있습니다. BaseEntity 생성하기 common.domain package안에 user_master에 들어갈 BaseEntity를 생성합니다. HTML 삽입 미리보기할 수 없는 소스 BaseEntity는 @MappedSuperclass annotation을 활용해서..

Kotlin 2023.01.17

Kotlin Springboot Rest API 만들기 3 - Entity 만들기

전체 코드 https://github.com/GHGHGHKO/pepega-blog-kotlin 이전 포스팅에서는 HelloWorld API를 개발 후 Postman을 활용하여 API를 호출하였습니다. 이번 포스팅에서는 앞으로 만들 Entity 구조를 간략하게 설명하고 예시로 우아하게 Entity를 구성하는 방법에 대해 작성하였습니다. 불필요한 쿼리는 사용하지 않는게 좋으니까요! 다음 포스팅에서 로그인과 회원가입을 만들어보겠습니다! 1. domain(entity) 생성 JPA에서 가장 중요하다고 생각되는 것이 entity입니다. https://spoqa.github.io/2022/08/16/kotlin-jpa-entity.html 스포카에서 Kotlin으로 JPA Entity를 정의하는 방법 도도카트 서비..

Kotlin 2023.01.03

docker 이미지 생성, docker hub 업로드, docker springboot mysql 연동

application.yml 혹은 application.properties 파일 수정 ​ 우선 local에서 작업한 springboot 프로젝트를 docker 이미지로 뽑아내기 위해 application.yml 혹은 application.properties 파일을 수정해야한다. //application.properties spring.datasource.url=jdbc:mysql://my_mysql:3306/mydatabase?useSSL=false&useUnicode=true&serverTimezone=Asia/Seoul&allowPublicKeyRetrieval=true application.properties 내용에 위 내용 말고도 다른 내용이 많을 것으로 예상된다. localhost 혹은 127...

Docker 2021.10.22

springboot로 Rest api 만들기(8) SpringSecurity를 이용한 인증 및 권한부여

전체 소스코드 https://github.com/GHGHGHKO/Springboot/tree/main/pepega_chapter_8 GitHub - GHGHGHKO/Springboot: 블로그에 업로드 된 소스코드 블로그에 업로드 된 소스코드. Contribute to GHGHGHKO/Springboot development by creating an account on GitHub. github.com 이전 포스팅에서는 Spring에서 메시지를 처리하는 방법에 대해서 알아봤고 MessageSource를 이용하여 Exception Message를 고도화하였다. swagger에서 response body의 내용을 한글, 영어로 바꾸며 도출하는 내용을 포스팅 했었다. ​ 이번 포스팅에서는 SpringSecu..

SpringBoot 2021.10.22

springboot로 Rest api 만들기(7) MessageSource를 이용한 Exception 처리

시작 전 변경 사항이 있다! (2022.07.18 수정) https://github.com/akkinoc/yaml-resource-bundle/issues/103 bug: No libraries found for 'dev.akkinoc.util.YamlResourceBundle' · Issue #103 · akkinoc/yaml-resource-bundle Describe the bug use Gradle Groovy DSL I found No libraries found for 'dev.akkinoc.util.YamlResourceBundle' To Reproduce implementation 'dev.akkinoc.util:yaml-resource-bundle:2.4.1'... github.com 해..

SpringBoot 2021.10.22

springboot로 Rest api 만들기(6) ControllerAdvice를 이용한 Exception 처리

전체 소스코드 https://github.com/GHGHGHKO/Springboot/tree/main/pepega_chapter_6 GitHub - GHGHGHKO/Springboot: 블로그에 업로드 된 소스코드 블로그에 업로드 된 소스코드. Contribute to GHGHGHKO/Springboot development by creating an account on GitHub. github.com ​ 이전 포스팅에서는 본격적으로 API 서버 개발을 하기 전 API 인터페이스 및 결과 데이터 구조를 살펴보고 확장 가능한 형태로 설계해보았다. ​ API 성공에 대한 내용만 포스팅했지만 이번 포스팅에는 실패 시 ExceptionHandling과 결과 Message 처리에 대한 내용을 살펴보도록 하겠다...

SpringBoot 2021.10.22

springboot로 Rest api 만들기(5) API 인터페이스 및 결과 데이터 구조 설계

전체 소스코드 https://github.com/GHGHGHKO/Springboot/tree/main/pepega_chapter_5 GitHub - GHGHGHKO/Springboot: 블로그에 업로드 된 소스코드 블로그에 업로드 된 소스코드. Contribute to GHGHGHKO/Springboot development by creating an account on GitHub. github.com 이전 포스팅에는 swagger를 활용하여 API 문서를 자동화하는 웹페이지를 제작했다. ​ 이번 포스팅에는 API 서버 개발을 본격적으로 진행해 보기 위해 현재 API 인터페이스 및 결과 데이터의 구조를 살펴보고 확장 가능한 형태로 설계할 것이다. ​ API는 제공 대상이 클라이언트 APP이나 WEB 개..

SpringBoot 2021.10.22

springboot로 Rest api 만들기(4) Swagger API 문서 자동화

전체 소스코드 https://github.com/GHGHGHKO/Springboot/tree/main/pepega_chapter_4 GitHub - GHGHGHKO/Springboot: 블로그에 업로드 된 소스코드 블로그에 업로드 된 소스코드. Contribute to GHGHGHKO/Springboot development by creating an account on GitHub. github.com ​ 이전 포스팅에는 H2 Database를 활용하여 GET, POST 방식으로 데이터를 출력하고 도출하는 방법을 진행했었다. ​ 이번 포스팅에는 프론트앤드 개발자가 편하게 참고할 수 있는 문서인 Swagger라는 것을 활용하여 API 문서 자동화를 진행해보려 한다. ​ ​ 시작 ​ ​ build.grad..

SpringBoot 2021.10.21