Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Veri API'sini oluşturucusunda yaygın GraphQL şema oluşturma, yetkilendirme, iç gözlem ve ilişki sorunları için çözümler.
Sık sorulan sorular
DAB'de GraphQL API nedir?
Veri API oluşturucu, dab-config.json içinde yapılandırılan her varlık için otomatik olarak bir GraphQL API'si oluşturur. DAB, varlık tanımlarını temel alarak sorgu ve mutasyon türleri oluşturur ve GraphQL isteklerini çalışma zamanında veritabanı sorgularına çevirir. İlişkisel veritabanları için şema yazma gerekmez; Cosmos DB bir GraphQL şema dosyası gerektirir.
GraphQL uç noktası nerede?
GraphQL uç noktası konumunda /<graphql-path>bulunur ve varsayılan olarak /graphqlolarak kullanılır. Yol, --graphql.path seçeneği ile dab init veya dab-config.json düzenlenerek özelleştirilebilir. GraphQL IDE (Banana Cake Pop), DAB geliştirme modunda çalıştırıldığında aynı yolda kullanılabilir.
DAB, GraphQL aboneliklerini destekliyor mu?
Hayır. Veri API'si oluşturucusu şu anda GraphQL aboneliklerini desteklememektedir. Yalnızca sorgular ve mutasyonlar desteklenir. Uygulamanız gerçek zamanlı güncelleştirmeler gerektiriyorsa sorgu uç noktasını yoklamayı veya DAB ile birlikte ayrı bir olay hizmeti kullanmayı göz önünde bulundurun.
Yaygın sorunlar
GraphQL şeması oluşturulmadı
Belirti: GraphQL uç noktası bir varlık için hiçbir tür döndürmez veya varlık şemada eksiktir.
Neden: Varlık GraphQL için etkinleştirilmemiş veya varlık yapılandırması şema oluşturmayı engelleyen bir hata içeriyor.
Çözünürlük:dab-config.json'i açın ve varlığın "graphql": { "enabled": true } veya graphql'ün açıkça false olarak ayarlanmadığını onaylayın. Şema oluşturma hataları için DAB başlangıç günlüklerini denetleyin. Varlığın source tablosunun veritabanında mevcut olduğundan ve veritabanı kullanıcısının meta verilerini okumak için yeterli ayrıcalıklara sahip olduğundan emin olun.
Mutasyon yetkilendirme hatası döndürüyor
Belirti: , createupdateveya delete mutasyonu bir yetkilendirme veya izin reddedildi hatası döndürür.
Neden: İstekte kullanılan rol, varlık üzerindeki mutasyon işlemi için yapılandırılmış gerekli izne sahip değil.
Çözünürlük:permissions içindeki dab-config.jsonvarlığın dizisini denetleyin. Rolün (örneğin, authenticated) actions içinde create, update veya delete listelendiğinden emin olun. İzni eklemek için kullanın dab update , ardından DAB'yi yeniden başlatın.
Üretimde introspection devre dışı bırakıldı
Belirti: GraphQL istemcileri veya araçları, şemayı sorgularken olduğu gibi Introspection is not allowed bir hata alır.
Neden: DAB, üretim modunda çalışırken GraphQL introspection özelliğini devre dışı bırakır. Bu beklenen davranıştır ve şemanın yetkisiz istemcilere sunulmasını önlemek için varsayılan bir güvenliktir.
Çözünürlük: Bu davranış tasarım gereğidir. Geliştirme sırasında introspection'ı etkinleştirmek için DAB'i --no-https-redirect ile çalıştırın veya dab-config.json'de host.mode'in development olarak ayarlandığını onaylayın. Üretim dağıtımlarında introspeksiyonu etkinleştirmeyin.
İlişki alanı null döndürür
Belirti: Bir varlıktaki sorgu, ilişkili veriler veritabanında mevcut olsa bile ilgili varlık alanı için döndürür null .
Neden: İki varlık arasındaki ilişki, dab-config.json içinde yapılandırılmamış veya bağlantı alanları yanlış eşlenmiş olabilir.
Çözüm: İlişkiyi eklemek için dab update kullanın, --relationship, --cardinality, --target.entity ve uygun bağlama alanlarını belirleyin.
--relationship.fields ve --target.fields içindeki yabancı anahtar sütun adlarının veritabanındaki gerçek sütun adlarıyla eşleştiğini doğrulayın. Birleştirme oluşturma hataları için DAB günlüklerini denetleyin.
İlişki adı, kullanıma sunulan alan adıyla çakışıyor
Belirti: İlişkisi olan bir varlık üzerindeki sorgular, özellikle bir ilişki adı varlığın kendi alan adlarından biriyle eşleştiğinde beklenmeyen sonuçlar veya şema hatası döndürür.
Neden: Veri API oluşturucusu şu anda ilişki adlarının ve kullanıma sunulan alan adlarının aynı varlıkta ayrı olduğunu doğrulamaz. Bunlar çakıştığında, oluşturulan şema belirsizdir ve sorgular yanlış davranabilir. Bu, GitHub sorunu #1937'de izlenen bilinen bir sınırlamadır.
Çözünürlük: İlişki adlarının aynı varlık tarafından sunulan hiçbir alan adını yinelemediğinden emin olun. İlişkiyi (dab güncelleştirmesinde --relationship kullanarak) veya kullanıma sunulan alanı (dab güncelleştirmesinde --map kullanarak) farklı hale getirmek için yeniden adlandırın.