Rust용 GraphQL 서버 라이브러리
GraphQL은 모바일 및 웹 애플리케이션 프런트엔드를 제공하기 위해 Facebook에서 개발한 데이터 쿼리 언어입니다.
주니퍼를 사용 하면 유형이 안전하고 엄청나게 빠른 GraphQL 서버를 Rust로 작성할 수 있습니다. 우리는 또한 Rust가 허용하는 한 편리하게 GraphQL 스키마를 선언하고 해결하려고 노력합니다.
주니퍼에는 웹 서버가 포함되어 있지 않습니다. 대신 기존 서버와 간단하게 통합할 수 있는 빌딩 블록을 제공합니다. 간편한 디버깅을 위해 임베디드 Graphiql 및 GraphQL Playground를 포함하여 Actix, Hyper, Rocket 및 Warp 프레임워크에 대한 사전 구축된 통합을 선택적으로 제공합니다.
이 책은 마스터 브랜치와 0.11.1 이후에 출시된 이전 버전에서도 사용할 수 있습니다. 책 색인을 참조하세요.
시작하기 가장 좋은 곳은 Juniper의 모든 기능을 다루는 풍부한 예제가 포함된 가이드가 포함된 Juniper Book입니다. (매우 많은 WIP)
빠르게 시작하고 Juniper에 대해 알아보려면 빠른 시작 섹션을 확인하세요.
매크로, 유형 및 Juniper API에 대한 구체적인 정보를 보려면 API 참조를 살펴보는 것이 가장 좋습니다.
특성 및 인터페이스가 포함된 다형성을 포함한 복잡한 예를 보려면 Star Wars 스키마를 확인할 수도 있습니다. 웹 프레임워크 통합의 예는 actix, axum, hyper, Rocket 및 Warp 예제 폴더를 참조하세요.
주니퍼는 인터페이스, 공용체, 스키마 검사 및 유효성 검사를 포함하여 사양(2021년 10월)에 따라 전체 GraphQL 쿼리 언어를 지원합니다. GraphQL 스키마 언어로 스키마를 출력할 수도 있습니다.
다른 언어용 GraphQL 라이브러리에 대한 예외로 주니퍼는 기본적으로 null이 아닌 유형을 빌드합니다. Vec<Episode>
유형의 필드는 [Episode!]!
. 예를 들어 [Episode]
에 해당하는 Rust 유형은 Option<Vec<Option<Episode>>>
입니다.
주니퍼는 직렬화 형식 및 네트워크 전송에 대해 중립적입니다.
주니퍼는 각각 execute()
및 execute_sync()
사용하여 비동기 및 동기 실행을 모두 지원합니다. 비동기 실행은 런타임에 구애받지 않습니다.
주니퍼는 GraphQL 스키마 정의에 코드 우선 접근 방식을 따릅니다. 대신 스키마 우선 접근 방식을 사용하려면 스키마 파일에서 코드를 생성하기 위한 juniper-from-schema를 고려하세요.
Juniper는 매우 일반적인 Rust 크레이트와 자동 통합되어 스키마 구축을 쉽게 만듭니다. 이 상자의 유형은 자동으로 스키마에서 사용할 수 있습니다.
Juniper는 아직 1.0에 도달하지 않았으므로 일부 API 불안정이 예상됩니다.