2023/11 92

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..

GitHub Android CI/CD

Firebase App Distribution 신뢰할 수 있는 테스터에 앱을 쉽게 배포할 수 있음 테스터 기기에 앱을 빠르게 제공할 수 있음 💡 iOS의 TestFlight와 비슷해 보임 GitHub Action Workflows github에서 소스 커밋시 브랜치 별로 동작할 방법을 정의 name: Android CI on: push: branches: [ "main" ] pull_request: branches: [ "main" ] jobs: build: runs-on: ubuntu-latest outputs: apk: app/build/outputs/apk/release/app-release.apk steps: - uses: actions/checkout@v3 - name: set up JDK 11..

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

코틀린 - 예외처리, Type System, 컬렉션

Kotlin in Action 을 요약한 내용입니다. 예외처리 예외 처리는 자바나 다른 언어와 비슷 throw는 식이므로 다른 식에 포함될 수 있다. val percentage = if (number in 0..100) number else throw IllegalArgumentException("A percentage value must be between 0 and 100 : $number") try, catch, finally 자바 코드와 가장 큰 차이는 throws 절이 코드에 없다 자바에서는 함수 선언 뒤에 throws IOException 을 붙여야 한다 fun readNumber(reader: BufferedReader): Int? { try { val line = reader.readLin..

코틀린 스터디 2023.11.10

코틀린 - 클래스, 인터페이스, 상속

Kotlin in Action 을 요약한 내용입니다. 클래스 클래스와 인터페이스는 자바와는 약간 다름 인터페이스에 프로퍼티 선언이 들어갈 수 있다. 선언은 기본적으로 final 이며 public 중첩 클래스에는 외부 클래스에 대한 참조가 없다 클래스를 data로 선언하면 컴파일러가 표준 메소드를 생성 클래스 초기화 주 생성자와 초기화 블록 constructor: 주 생성자나 부 생성자 정의 init: 초기화 블록 class User constructor(_nickname: String) { // 주 생성자 val nickname: String init { // 초기화 블록 nickname = _nickname } } 부 생성자 부 생성자는 필요에 따라 여러개 선언 가능 open class View { c..

코틀린 스터디 2023.11.10

코틀린 - 변수, 연산자, 반복문, 함수

Kotlin in Action 을 요약한 내용입니다. 변수 변수 선언시 이름 뒤에 타입을 명시하거나 생략 타입 지정을 생략하고 사용 가능 val javacafe = "자바카페" val number = 20 // 타입 지정하고 사용 가능 val number: Int = 20 변경 가능한 변수와 변경 불가능한 변수 val 변경 불가능한 참조를 저장하는 변수 val로 선언된 변수는 초기하고 나면 재대입이 불가능 자바에서 final var 변경 가능한 참조를 저장하는 변수 자바의 일반 변수 💡 기본적으로 모든 변수를 val 키워드를 사용해 불변 변수로 선언하고 필요할 때만 var로 변경 val 참조 자체는 불변이라도 참조가 가르키는 값은 변경될 수 있다. fun main() { val languages = ar..

코틀린 스터디 2023.11.10