GraphQL 스터디 7

GraphQL Custom Validation 추가

Custom Validation 필요성 정의 되지 않은 Validation를 사용할 경우 필요 ex: 나이 입력값과 성인유무를 입력받는 경우 나이에 따라서 성인유무도 체크 해야함 Custom Validation 추가 @Documented @Constraint(validatedBy = [CustomValidator::class]) @Target(AnnotationTarget.CLASS) annotation class CustomValid( val message: String = "", val groups: Array = [], val payload: Array = [] ) class CustomValidator: ConstraintValidator { override fun isValid(value: Us..

GraphQL Validation 추가

Validation의 필요성 사용자 등록과 같은 API를 작성할 때 필수 값이 없으면 DB오류나 의미 없는 데이터가 생성 될수 있음 사용자 등록 API 사용자 이름은 공백이면 의미 없는 데이터가 생성 data class User( val id: Long?, val name: String? ) @GraphQLMutation(name = "createUser", description = "사용자 등록") fun createUser(user: User): User { return user } 의미 없는 사용자 추가 mutation { createUser(user: { id: 1 name: "" }) { id name } } 응답 { "data": { "createUser": { "id": 1, "name": ..

GraphQL 오류 처리

개발 환경 설정 GraphQL SPQR 라이브러리 추가 implementation("io.leangen.graphql:graphql-spqr-spring-boot-starter:0.0.6") implementation("com.graphql-java-kickstart:graphql-java-tools:11.0.0") 기본 설정 오류 { "errors": [ { "message": "Exception while fetching data (/getErrorUser) : 사용자 조회 실패", "locations": [ { "line": 2, "column": 3 } ], "path": [ "getErrorUser" ], "extensions": { "classification": "DataFetchingExc..

GraphQL API 만들기

웹 앱 API 개발을 위한 GraphQL 을 요약한 내용입니다. 서비스에 적용할 수 있는 기술 스택은 다양하나, 이 책에서는 자바스크립트를 사용하겠습니다. 상당히 범용적인 내용을 배우기 때문에 나중에 다른 언어나 프레임워크를 쓰더라도 GraphQL 서비스의 전반적인 설계는 비슷해 보일 것입니다. 다른 언어로 된 라이브러리에 관심이 있다면 GraphQL.org(https://graphql.org/) 사이트를 참조하세요 2015년에 GraphQL 명세가 처음 공개되었습니다. 서버 세부 구현 사항은 의도적으로 명세에서 생략했기 때문에 다양한 배경의 개발자들이 본인이 사용하기 편한 언어를 가지고 GraphQL을 사용할 수 있었습니다. 페이스북 팀에서는 자바스크립트로 만든 레퍼런스 코드인 GraphQL.js를 공..

GraphQL 스터디 2023.11.10

스키마 설계하기

웹 앱 API 개발을 위한 GraphQL 을 요약한 내용입니다. GraphQL을 사용하면 API 설계 과정이 바뀔 수도 있습니다. API가 REST 엔드포인트의 집합이 아니라 타입 집합으로 보이게 됩니다. API에서 반환할 데이터 타입에 대한 생각을 보고, 같이 이야기를 나누어 보고, 이를 재대로 정의해 두는 일이빈다. 데이터 타입의 집합을 스키마라고 부릅니다. **스미카 우선주의(Schema First)**는 디자인 방법론의 일종입니다. 모든 팀원이 애플리케이션 안의 데이터 타입을 같은 선상에서 이해할 수 있습니다. 백엔드 팀은 스키마를 보고 어떤 데이터를 저장하고 전달해야 하는지 정확히 이해할 수 있습니다. 프론트엔드 팀은 사용자 인터페이스 작업을 할 때 필요한 데이터를 정의할 수 있습니다. Grap..

GraphQL 스터디 2023.11.10

GraphQL 쿼리어

웹 앱 API 개발을 위한 GraphQL 을 요약한 내용입니다. SQL(구조화된 쿼리 언어)는 도메인에 종속된 언어로, 데이터베이스안의 데이터에 ㅓㅂ근하거나, 데이터를 관리하거나 조작하는데 사용합니다. 명령어 한번으로 복수의 레코드에 접근한다는 아이디어는 SQL에서 나온 것입니다. SQL을 사용한다면 ID 뿐만 아니라 다른 키 값을 사용해 레코드에 접근할 수 있습니다. GraphQL은 쿼리 데이터베이스용으로 만들어진 개념을 가져다가 인터넷에 적용해 만들어진 것입니다. GraphQL 쿼리 하나로 여지저기 흩어져 있는 데이터를 한데 모아 받습니다. SQL처럼 GraphQL 쿼리도 데이터를 변경하거나 삭제할 때 사용합니다. SQL의 QL과 GraphQL의 QL은 둘다 마찬가지로 쿼리 언어(Query Langu..

GraphQL 스터디 2023.11.10

GraphQL에 오신 것을 환영합니다.

웹 앱 API 개발을 위한 GraphQL 을 요약한 내용입니다. 1.1 GraphQL 이란? API를 만들 때 사용할 수 있는 쿼리 언어 입니다. 쿼리에 대한 데이터를 받을 수 있는 런타임이기도 합니다. GraphQL 쿼리는 실제로 필요한 데이터만 받도록 작성할 수 있습니다. query { person(personID: 5) { name birthYear created } } GraphQL 은 선언형(declarative) 데이터 페칭(fetching) 언어라고 흔히 일컬어집니다. 개바자는 '무슨' 데이터가 필요한지에대한 요구사항을 작성하면 되고 '어떻게' 가져올지는 신경 쓰지 않아도 됩니다. GraphQL 서버 라이브러리는 다양한 언어로 만들어져 있습니다. C#, 클로저, 엘릭서, 얼랭, 고, 그루비,..

GraphQL 스터디 2023.11.10