본문 바로가기

배움의 즐거움

(111)
(7) Graphql-ruby - 스키마 정의 스키마 - 정의 GraphQL 시스템은 스키마라고 불린다. 스키마는 해당 시스템의 모든 타입과 필드를 포함하며, 스키마는 쿼리를 실행하고 introspection system 이라는 것을 생성한다. GraphQL 스키마는 GraphQL::Schema 를 확장한 클래스이다.class MyAppSchema
(6) GraphQL - 인트로스펙션 Introspection GraphQL 스키마가 어떠한 쿼리를 지원하는지 물어보는건 유용할 수 있다. GraphQL은 introspection 시스템을 통해 이를 가능케 한다. 스타워즈 예제에서 파일 starWarsIntrospection 은 introspection 시스템을 보여주는 많은 쿼리를 포함하고 있다. 그리고 이것은 이를 확인할 수 있는 테스트 파일이다. 우리는 타입 시스템을 디자인 하엿기 때문에 어떠한 타입들이 사용 가능한지 안다. 하지만 우리가 이를 디자인 하지 않았다면 우리는 GraphQL 에 __schema 필드를 쿼리 함으로써 이를 물어볼 수 있다. 그리고 이것은 쿼리의 루트 타입에서 언제나 사용 가능하다. 어떤 타입이 가능한지 한번 물어보자.{ __schema { types { na..
(5) GraphQL - 실행 Execution 유효성을 검사한 뒤 GraphQL 쿼리는 GraphQL 서버에 의해 실행되는데, 이 서버는 요청된 쿼리와 같은 형태로 결과를 리턴한다. 일반적으로 이는 JSON 이다. GraphQL 은 타입 시스템이 없는 쿼리는 실행할 수 없는데, 예시를 통해 살펴보자. 아래 예시들은 지금까지 써왔던 예시들의 일부이다.type Query { human(id: ID!): Human } type Human { name: String appearsIn: [Episode] starships: [Starship] } enum Episode { NEWHOPE EMPIRE JEDI } type Starship { name: String } 쿼리가 실행될 때 어떤 일들이 발생하는지 알아보기 위하여 예시를 보자.{ h..
(4) GraphQL - 유효성 검사 Validation 타입 시스템을 사용함으로써 GraphQL 쿼리가 유효한지 아닌지 미리 알 수 있다. 이는 서버와 클라이언트가 유효하지 않은 쿼리가 생성되었을 때 개발자에게 런타임 체크에 의존하지 않고 이를 효과적으로 알려줄 수 있게끔 한다. 우리의 스타워즈 예제에서 보면 파일 starWarsValidation-test.js 은 유효하지 않은 많은 쿼리를 포함하고 있으며 구현의 유효성 검사기를 실행할 수 있는 테스트 파일이다. 먼저 유효한 쿼리를 보자. 이것은 nested 쿼리이며, 이전 섹션에서 나온 예시와 비슷하지만 중복된 필드들은 fragment로 빼내었다.{ hero { ...NameAndAppearances friends { ...NameAndAppearances friends { ...Nam..
(3) GraphQL - 스키마와 타입 Schemas and Types 이번 페이지에서는 GraphQL 타입 시스템에 대해 알아야 할 모든 것과 어떤 데이터가 요청될 수 있는지 설명하는 방법에 대해 알아본다. GraphQL 이 모든 벡엔드 프레임 워크나 프로그래밍 언어와 함께 사용될 수 있기 때문에 우리는 구체적인 적용보다는 오직 개념에 대해서 알아볼 것이다.Schemas and Types Type SystemType LanguageObject Types and FieldsArgumentsThe Query and Mutation TypesScalar TypesEnumeration TypesLists and Non-NullInterfacesUnion TypesInput TypesType system GraphQL 을 전에 본 적이 있다면 Gra..
(2) GraphQL - 쿼리와 뮤테이션 Queries 와 Mutations 이번 페이지에서는 어떻게 GraphQL 서버로 쿼리를 보내는지 알아보자.Queries and MutationsFieldsArgumentsAliasesFragmentsOperation NameVariablesDirectivesMutationsInline Fragments Fields 간단히 말해서 GraphQL은 객체에 특정 필드를 요청하는 것이다. 이것을 실행하였을 때 얻을 수 있는 간단한 쿼리와 결과를 보면서 시작해보자{ hero { name }}{ "data": { "hero": { "name": "R2-D2" } }} 쿼리와 결과가 완전히 같은 모양인 것을 볼 수 있다. 너는 항상 너가 예상한 것을 돌려받을 것이고 이것은 GraphQL에서 중요한 점이다. 그리고 ..
(1) GraphQL - 소개 GraphQL 입문GraphQL이 어떻게 동작하는지, 어떻게 사용하는지에 대해 알아보자. GraphQL을 이용하여 어떻게 서비스를 만들지 도큐멘테이션을 찾고 있는가? 다양한 언어들로 GraphQL을 적용할 수 있도록 돕는 많은 라이브러리들이 있다. 실제 튜토리얼과 함께 더 깊게 알아보기 위해서는 How to GraphQL에서 볼 수 있다.GraphQL은 너의 API, 그리고 너가 정의해놓은 데이터 타입 시스템을 이용하여 쿼리를 실행할 수 있는 서버사이드를 위한 쿼리언어이다. GraphQL은 특정한 데이타베이스나 저장엔진에 얽메여 있지 않고 대신 너의 코드와 데이터에 의해 좌우된다 GraphQL 서비스는 타입과 그 타입에 필드를 적용함으로써, 그리고 각 필드에 함수들을 제공함으로써 생성된다. 예를들어 Gr..