1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/gqlengine-gqlengine

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README_zh.md 5.3 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 26.11.2024 07:35 8f8ca6f

GQLEngine: высокопроизводительный фреймворк для GraphQL на языке Go

Demo

  • starwars: https://gitee.com/gqlengine/starwars (демонстрирует стандартные запросы, обновления и другие функции, такие как Interface/Union).
  • chatbox: https://gitee.com/gqlengine/chatbox (демонстрирует функции, такие как WebSocket-коммуникация и загрузка изображений).

Особенности

  • Поддержка основных функций.
  • Поддержка типов объектов.
  • Поддержка интерфейсов.
  • Поддержка объединений.
  • Поддержка перечислений.
  • Поддержка пользовательских скалярных типов.
  • Поддержка входных объектов.
  • Поддержка полей ввода аргументов.
  • Функциональность подписки (интеграция с высокопроизводительным WebSocket, поддержка миллионов подключений).
  • Загрузка файлов.
  • Пользовательские типы идентификаторов.
  • Анализ трассировки ссылок.
  • Поддержка документирования с использованием тегов.
  • Плагин-поддержка.

Следите за нами

image-20200211135929078

Быстрый старт

Через команду go get:

go get -u github.com/gqlengine/gqlengine

Напишите main.go:

package main

import (
  "net/http"

  "github.com/gqlengine/gqlengine"
)

// MyInfo определяет структуру данных бизнес-логики
type MyInfo struct {
  gqlengine.IsGraphQLObject `gqlDesc:"my info"` // gqlDesc используется для генерации описательной информации

  MyStringField string // определение поля, gqlengine автоматически сопоставит его с типом GraphQL на основе базового типа Golang
  MyIntField 	  int `gqlRequired:"true"`  // gqlRequired используется для пометки этого поля как обязательного и непустого
}

// MySimpleQuery — это конкретная реализация кода бизнес-логики
func MySimpleQuery() (MyInfo, error) {
  panic("not implemented")
}

func main() {
  engine := gqlengine.NewEngine(gqlengine.Options{
	    Tracing: true, // включить функцию анализа цепочки вызовов GraphQL
  })

  engine.NewQuery(MySimpleQuery) // обязательно зарегистрируйте свой интерфейс!

  // инициализация engine
  if err := engine.Init(); err != nil {
    panic(err)
  }

  // обслуживание HTTP
  http.HandleFunc("/api/graphql", engine.ServeHTTP)
  if err := http.ListenAndServe(":8000", nil); err != nil {
    panic(err)
  }
}

Это базовая конфигурация. После выполнения команды go run main.go вы можете получить доступ к API GraphQL по адресу http://localhost:8000/api/graphql.

Если вы хотите иметь инструмент, похожий на Swagger, для просмотра и отладки API, у нас есть не только он, но и более совершенная функция GraphQL Playground. Просто добавьте ещё один пакет:

go get -u github.com/gqlengine/playground

Затем добавьте следующий код в main():

...

import (
  "github.com/gorilla/mux"
  "github.com/gqlengine/playground"
)

...

func main() {

  ... // инициализируйте ваш gql engine

  // настройте конечную точку GraphQL для Playground (по крайней мере, пусть Playground знает, куда идти за данными GraphQL)
  playground.SetEndpoints("/api/graphql", "/api/graphql/subscriptions")

  // рекомендуется использовать 'gorilla/mux' для обслуживания веб-ресурсов Playground
  r := mux.NewRouter()
  r.HandleFunc("/api/graphql", engine.ServeHTTP)
  r.HandleFunc("/api/graphql/subscriptions", engine.ServeWebsocket)
  r.PathPrefix("/api/graphql/playground").
    Handler(http.StripPrefix("/api/graphql/playground",
      http.FileServer(playground.WebBundle)))

  println("open playground http://localhost:9996/api/graphql/playground/")
  if err := http.ListenAndServe(":9996", r); err != nil {
    panic(err)
  }
}

Откройте браузер по адресу: http://localhost:9996/api/graphql/playground.

Пожертвование

Если вам нравится наш открытый исходный код и он оказался полезным, пожалуйста, отсканируйте QR-код ниже, чтобы поддержать нашу работу чашкой кофе.

image-20200211142656556

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/gqlengine-gqlengine.git
git@api.gitlife.ru:oschina-mirror/gqlengine-gqlengine.git
oschina-mirror
gqlengine-gqlengine
gqlengine-gqlengine
master