Spring Boot/Information(8)
-
[GraphQL] Spring Boot로 Graph QL 적용하기 (2)
[ 이전 내용 보러가기 ] [ 완성 코드 보러가기 ] → Branch: gql_mutation 이전 내용에서는 CRUD(Create, Read, Update, Delete)중, "R" 에 속하는 query만 작성했으니 이번에는 CUD에 속하는 mutation을 작성하고자 한다. GraphQL에서는 하나의 EndPoint에서 2개의 Schema로 관리를 한다고 했다.(mutation, query) 여기서 query는 단순히 읽기를 뜻하는것이고, mutation은 데이터를 조작하는 역할을 한다. 먼저 이전 예제에서 조금 수정해야 하는 부분이 있다. 가짜 Database를 만들고, 이에 대해 Spring Session이 유지되는 동안 데이터를 조작하는 기능을 만들 것이다. (API를 사용하는 서버에 CUD 작..
2021.12.20 -
[GraphQL] Spring Boot로 Graph QL 적용하기 (1)
해당 글에는 Retrofit, GraphQL이 나오니 만약 이중 하나를 모른다면 이해가 어려울 수 있다. 아래 링크를 통해 먼저 알고 가도록 하자. [ Graph QL이 무엇인지 알고가기 ] [ Retrofit이 무엇인지 알고가기 ] [ 완성 코드 보러가기 ] → Branch: gql_query [ Dev Spec : Kotlin, build.gradle.kts(Kotlin), Spring Boot 2.6, JDK11 ] 이번에는 Spring Boot로 Graph QL을 적용 시켜 봤다. Database까지 연결하지는 않고, 간단하게 테스트만 하면서 경험해보는 것이라 Fake Rest API를 이용해 데이터를 받아와 Graph QL로 데이터를 보내주는 형식으로 진행하였다. 먼저 아래 의존성을 추가해주어야..
2021.12.19 -
[JWT] JWT Token 정리
JWT (Json Web Token) 다양하고 많은 프로그래밍 언어에서 지원하고 있다.(주류 언어는 대부분 지원) 자가 수용적인 특성을 지니고 있다. → 필요한 모든 정보를 자체적으로 지니고 있음 (기본정보 : 발급일자, 유효일자 등 / 전달정보 : 이를테면 로그인 정보 / 시그니쳐 : 검증을 위해 사용) 쉽게 전달 가능하다. → Header로 전달 가능하고, Header에 넣어 OAuth 적용이 가능함. QueryParams로도 넘길 수 있으나, 보안상 대부분 Header에 넣어 넘기고 있음. 언제 쓸까? 주로 로그인시, 보안이 중요한 데이터를 주고 받을 때 사용함. (예: 유저가 로그인 진행 → 서버에서 유저 정보를 기반으로 JWT Token 발급 → 유저가 서버 요청시 Token을 전달 → 서버에서..
2021.12.14 -
[Spring Boot] REST API 구축시 Local Date Time 받기
평소에 Data Class를 만들어 Request DTO, Response DTO를 구축했다. 이번에 LocalDateTime 형식으로 데이터를 받아야 하는 것이 있어서 똑같이 Data Clas DTO를 만들었는데, 잘못된 요청 값으로 계속 오류가 났다. 찾아보니, @JsonPropery 어노테이션 외에도 2개를 더 달아줘야 하는 것으로 확인됐다. 1 2 3 4 @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonProperty("dateTime") val dateTime: LocalDateTime Colored by Co..
2021.11.10 -
[build.gradle.kts] Spring Build 파일 실행시 ReactJS도 같이 실행하는 방법(3)
개발중 이슈가 발생해 찾다보니 나온 방법이다. React.js와 Spring Boot를 같이 실행하게 되었을 때 React.js의 Router를 통해 이동하게 될 경우 404 에러를 보게 된다. (왜냐면 경로가 똑같기 때문에..) 그렇기 때문에 Error Handler를 적용해주어야 한다. (만약 Interceptor를 걸어놨고, 이에 대해 ExcludePath 나 addPath를 진행해야한다면 Spring Boot의 공통적인 End Point만 적용해주도록 하자.) CustomErrorController 라는 Class 파일을 생성 후 ErrorController 를 상속 받는다. 이 후 /error Mapping 처리를 진행해 /index.html 로 돌아가게 하면 된다. 1 2 3 4 5 6 7 8..
2021.11.08 -
[Spring Boot] Kotlin + Gradle MyBatis 연동
프로젝트 진행중 JPA 뿐 아니라 MyBatis를 연동해야 할 일이 생겼다. 먼저 내가 진행하고 있는 프로젝트에 대해서는 모듈은 아래와 같이 분리되어 있다. Spring Boot Application 만 담고 있는 모듈 실제 로직이 작성되어 있는 모듈 Entity Model 을 담고 있는 모듈 여기서 MyBatis & JPA 는 2번 모듈에 추가를 진행해야한다. JPA는 연동을 이미 해놨고, 이제 MyBatis 만 연동하면 된다. 1. MyBatis Mapper 가 들어갈 모듈(2번), Spring Boot Application 이 있는 모듈(1번) 에 아래와 같이 Gradle에 Dependency를 추가시켜주자. 1 implementation("org.mybatis.spring.boot:mybatis-..
2021.11.02