BasicGraphQL

BasicGraphQL, Hot Chocolate kütüphanesi ile GraphQL kullanımını gösteren bir ASP.NET Core 8 Web API projesidir. Voyager ve Postman kullanarak GraphQL uç noktalarının nasıl test edileceğini içeren örnekler sunar.

Bu proje, aşağıdaki katmanlı mimariyi takip eder:

  • BasicGraphQL.Domain: Book modelini içerir.
  • BasicGraphQL.Infrastructure: Demonstrasyon amaçlı bellek içi sahte veri sağlar.
  • BasicGraphQL.Application: GraphQL sorgularını ve mutasyonlarını uygular.
  • BasicGraphQL.Api: İstemci isteklerini işleyen GraphQL uç noktasını sunar.

Proje aşağıdaki işlemleri sağlar:

  • Tüm kitapları getirme (getBooks).
  • ID ile kitap getirme (getBookById).
  • Yeni kitap ekleme (addBook).
  • Voyager kullanarak GraphQL şemasını görselleştirme.

Kullanılan Teknolojiler

Bu proje aşağıdaki teknolojiler ile geliştirilmiştir:

  • ASP.NET Core 8
  • Hot Chocolate (GraphQL sunucusu için)
  • GraphQL Voyager (şema görselleştirme için)

Uygulamayı Çalıştırma

Bu projeyi çalıştırmak için önce .NET 8 SDK yüklü olmalıdır. Daha sonra aşağıdaki adımları takip edin:

1. Uç Noktalara Erişim

  • GraphQL Playground: http://localhost:5042/graphql
  • Voyager UI: https://localhost:7027/graphql

Uygulamayı Test Etme


Voyager ile Test Etme

  1. Uygulamayı başlatın.
  2. Tarayıcınızda http://localhost:5042/graphql-voyager adresine gidin.
  3. Şemayı keşfedin ve sorguları Voyager arayüzü üzerinden çalıştırın.

Postman veya curl ile Test Etme

GraphQL uç noktasını Postman veya curl kullanarak test edebilirsiniz. Aşağıda bazı örnekler verilmiştir.

Tüm Kitapları Getirme

curl -X POST http://localhost:5042/graphql \
-H "Content-Type: application/json" \
-d '{"query": "query { getBooks { id title author genre year isTurkish } }"}'

Id'ye göre kitap çekme

curl -X POST http://localhost:5042/graphql \
-H "Content-Type: application/json" \
-d '{"query": "query { getBookById(id: 1) { id title author genre year isTurkish } }"}'

Yeni kitap ekleme

curl -X POST http://localhost:5042/graphql \
-H "Content-Type: application/json" \
-d '{"query": "mutation { addBook(title: \"Clean Code\", author: \"Robert C. Martin\", genre: \"Non-fiction\", year: 2008, isTurkish: false) { id title author } }"}'

Proje Linki