본문 바로가기
관리자

Programming-[Backend]

(417)
[TIL] @NotNull, @NonNull, @NotEmpty, @NotBlank, required=true 컨트롤러 파라미터 필수값 처리 Controller 파라미터 필수값으로 표시하고, 처리하기 Controller에서 파라미터로 받아오는 값을 필수값으로 처리하고, 표시하고 싶다면 @NotNull과 @Schema(required=true, ...)를 사용하면 된다. required = true는 @Schema 어노테이션의 속성이므로 Swagger의 문서상에서 프론트 엔드쪽에 보여질 때 required로 표시를 하는 옵션이고, 실제 @NotNull은 해당 값이 파라미터로 들어오지 않으면 에러를 반환한다. 만약 에러 메시지를 지정하고 싶다면 @NotNull(message = " ... " ) 속성을 사용하면 된다. @NonNull, @NotEmpty, @NotBlank NonNull은 데이터값이 Null이면 안된다. Null이면 에러를 반환한..
[TIL] Controller 필드 중 LocalDate 처리하기, @DateTimeFormat, Swagger Controller의 파라미터의 필드 값 중 LocalDate 타입이 있을 때는, @DateTimeFormat 어노테이션을 추가해주어야 한다. 1 2 3 @Schema(description = "받아올 날짜", type = "LocalDate", example = "2021-04-28") @DateTimeFormat(pattern = "yyyy-MM-dd") private LocalDate parentsDay Colored by Color Scripter cs 그러면 아래와 같이 Swagger에서 지정해준 날짜 포맷으로 입력 시, 정상적으로 동작한다.
[TIL][에러] 스프링 Projections constructor, No constructor found for class 상황 QueryDsl을 이용해서 Entity 에서 전체 필드를 호출하는 것이 아니라, 특정 필드들만 호출하거나, 연관된 다른 Entity의 필드를 동시에 호출하고 싶다면 아래와 같이 Projections.constructor를 사용한다. Repository쪽 코드 1 2 3 4 5 6 7 8 9 10 jpaQueryFactory .select(Projections.constructor(XxxDto.class , Xxx1Entity.id.as("id") , Xxx1Entity.name.as("siteName") , Xxx2Entity.visitor ) ) .from(...) ... Colored by Color Scripter cs XxxDto쪽 코드 1 2 3 4 5 6 7 8 9 @Data @Build..
[TIL][TDD] 스프링 TDD 개발 방법론 개요 필요성 정확한 프로그램을 만들기 위해서 생각할 수 있는 최대한의 경우의 수를 테스트 해보는 것이 당연히 유리하다. 그리고 이러한 테스트를 하나의 기능별로 구분해서 진행해본다면, 개발자가 명확한 논리를 갖게 되고 테스트를 하는 것이 쉬워진다. 또한 새로운 기능이 추가되거나 수정사항이 생기더라도 어떤 테스트에서 문제가 생겼는지 정확히 알 수 있고 유지보수하기가 편함을 상식적으로 알 수 있다. 위 방법대로 수행하는 것이 일반적이다. 그러나 TDD는 Test Driven Development로, 비즈니스 로직 -> 테스트 케이스 -> 메서드(실제 코드) 순으로 작성한다. 즉 메서드를 검증하기 위한 수단으로 테스트 코드를 작성하는 것이 아니라, 테스트 코드를 통과할 수 있는 소스 코드(메서드)를 짜는 방식으로 작..
스프링 부트 : 기본 개념 1) Entity, Repository 개념 개인적인 정리와 기록을 위한 글이다. 혹시라도 참고해주시는 분들께서는 정확하지 않은 내용이 있을 수 있으니 유의해주시길 바란다. 자바 진영의 백엔드 개발을 아무런 지식없이 시작하게 되었다. 현업에서 몸으로 부딪히며 정신없이 배우는 단계이다. 한편으론 초보자의 입장에서 쓰는 글이기 때문에 이해가 쉽고 공감이 되지 않을까 생각된다. Spring Boot, Spring Data JPA, Maven, lombok을 활용하여 서버 사이드의 서비스를 만드는 과정 중에 배운 기본 개념이다. 사용한 IDE는 intelliJ 이다. 1. Entity(엔티티) 데이터베이스(Database, DB) 에 쓰일 필드와 여러 엔티티간 연관관계를 정의한다. 데이터베이스는 엑셀처럼 2차원 테이블이라고 생각하면 되는데, 이 테이블에 ..
6. 영화 API GraphQL : Query, Mutation 요청해보기 참조 Nomad Coders의 무료 강의 'graphQL로 영화 API 만들기'를 참고하였다. nomadcoders.co/graphql-for-beginners 지난 글 graphQL의 구조, 원리에 대한 설명글을 이해하고 난 뒤에 아래 실습 내용을 살펴보자 5. 영화 API GraphQL : 구조, 원리 파악하기 실습하기 npm start 또는 yarn start를 통해 Server를 실행시키고, localhost:4000 으로 접속하여 graphql playground를 실행한다. 우측 그림과 같이 여러 개의 Tab을 만들어서 Query문을 날릴 수 있다. 첫번째 tab은 "Q" 라고 적혀 있는데, 실제 query문에 query type을 적어놨기 때문이고, 두번째 tab은 "M" 이라 적힌 걸 볼 ..
5. 영화 API GraphQL : 구조, 원리 파악하기 참조 Nomad Coders의 무료 강의 'graphQL로 영화 API 만들기'를 참고하였다. nomadcoders.co/graphql-for-beginners 원리. Resolver와 Schema에 맞게 query문을 날리면 원하는 데이터를 받는다! 아래 사진에서처럼, 왼쪽 client에서 query 문을 날리면 movies에 해당하는 "data"객체가 우측 결과화면에 표시되는 것을 볼 수 있다. 어떤 원리로 이것이 작동하는지 구조적으로 살펴보자. 1-1. resolver.js resolver는 query 요청이 왔을 때 어떤 데이터를 넘겨줄 것인가를 정의해주는 파일이다. resolver 내부에 Query와 Mutation이 있는데, 이는 REST API에서의 GET, POST와 유사하다고 보면 된다...
4. graphQL 서버 기본 작성법 : schema, resolver 목표 기본적인 graphql 서버 작성법과 동작과정을 학습해본다. 구성 아래 그림과 같이 graphql 폴더에 resolver.js와 schema.graphql 파일을 작성하였다. schema.graphql 파일 여기서는 DB를 작성하는 것처럼 데이터의 항목과 종류를 정의한다. type : Query 문으로 모든 query가 집중되고, 각 데이터를 각각의 type에서 뽑아내는 형식으로 이해했다. 아래의 사진에서 보면, type Query 아래에 person : Person! 으로 정의된 것을 볼 수 있다. 이것은 query문으로 person 객체에 대한 요청이 오면, type Person에 대한 내용을 전달해준다는 의미를 갖는다. 데이터 항목의 각 값에 형식이 정해져있고, '!' 표시가 있는 것을 볼 수..