JSON Şeması şemalarını (ör. Swagger) GraphQL şemalarına dönüştüren herhangi bir bağdaştırıcı var mı? Hatta REST http://graphql.org/blog/rest-api-graphql-wrapper/ etrafında sarma hakkında bir resmi makale, ancak genellikle REST zaten açıklanan ve Swagger bunun için en popüler biçimidir. Halihazırda mevcut bir uygulama varsa, kendi başıma yazmayı istemezdim.JSON Schema - GraphQL şema dönüştürücüleri
cevap
Ayrıca Swagger kullanıyorsanız, varolan REST API'nızı sarmanıza izin veren bir kitaplık yazdım.
https://github.com/yarax/swagger-to-graphql
Temelde GraphQL türlerine Swagger
şema eşleme yapar.
Ve bir makale bu yaklaşım ve kütüphane https://medium.com/@raxwunter/moving-existing-api-from-rest-to-graphql-205bab22c184
Birkaç ay önce bunu denemeye biraz zaman ayırdım. Sonuçların ayrıntılarını burada okuyarak okuyabilirsiniz: https://medium.com/apollo-stack/will-graphql-replace-rest-documentation-f1a55092ef9d#.m50im46o0
Online olarak Swagger şemalarının çoğuna baktıktan sonra, Swagger veya benzer API tanımlama dillerinin GraphQL şemasını tanımlamak için iyi bir başlangıç noktası olabileceğini düşünüyorum. Genellikle kendi başlarına bir şema oluşturmak için yeterli bilgi içermezler. Özellikle, nesneler arasındaki ilişkiler hakkında genellikle yeterli veri yoktur.
JSON biçimli bir şema açıklamasından başlamak isterseniz, yapmanız gereken tek şey, farklı veri türlerinizin üzerine Swagger'da döngü yapan ve GraphQLObjectType
nesnesi oluşturan bir kod yazmaktır. Yukarıda bağladığım blog yazısının örnek deposunda bunun basit bir yaklaşımını görebilirsiniz: https://github.com/apollostack/swapi-rest-graphql/blob/951e50ec29732c93e7aa0bc6880210fdd1816a2f/schema.js#L28
Temel olarak, yalnızca bir veri biçimini diğerine dönüştürüyorsunuz ve daha sonra veriler arasında bazı ilişkiler eklemeniz gerekir. yabancı anahtarlar, kimlikler ve benzeri) ve bir giriş noktası oluşturmak için bazı kök sorgular ekleyin. Bir REST API'sı durumunda, tek ve çoklu kaynak uç noktalarınızın kök sorgu alanlarınız gibi davranması genellikle mantıklıdır.
Serin yaklaşık yoktur! Teşekkürler, tam olarak aradığım şey bu –