مشاجره طرحواره های داده GraphQL با AWS AppSync

وقتی جستارها و جهشهای GraphQL شما با AWS AppSync ساخته نمیشوند، چه کاری باید انجام دهید
حال همه چطور است؟ 👋 این برایان است و به Tech Stack Playbook، راهنمای شما برای برنامهها، نرمافزارها و فناوری خوش آمدید (اما قول میدهم به روشی سرگرمکننده).
در پست وبلاگ امروز، ما قصد داریم به AWS AppSync، GraphQL و اشکالزدایی یک مشکل جالب توجه کنیم که شب گذشته در تلاش برای ساختن نقطه پایانی API خود برای یک برنامه وبلاگ با آن مواجه شدم.
در حالی که مهم است که بدانیم همه چیز چگونه کار میکند، اما همچنان به من یادآوری میشود که دانستن اینکه چرا کارها کار نمیکنند، و حتی بیشتر از آن، دانستن اینکه چگونه مشکلات را در هنگام بروز مشکل برطرف کنیم، مهمتر است.
در اینجا نگاهی اجمالی به آنچه در این پست وبلاگ خواهید آموخت:
👉 نحوه عملکرد AWS Amplify، AppSync و GraphQL Transformer
👉 اگر جستارهای/جهشهای GraphQL به صورت خودکار ساخته نمیشوند، چه باید کرد
👉 چگونه طرح واره داده ها و API خود را به فضای ابری آزمایش و ارسال کنیم
AWS Amplify Framework چیست؟
یکی از فریم ورک های مورد علاقه من برای ساخت برنامه های ابری تمام پشته، AWS Amplify Framework است. نه تنها از خدمات اصلی AWS پشتیبانی می کند:
- احراز هویت: AWS Cognito
- پایگاه داده: DynamoDB
- ذخیره سازی: AWS S3
- API: AWS AppSync
… اما همچنین از یک روش قدرتمند برای کار با GraphQL – the ترانسفورماتور GraphQL
AppSync به شما کمک می کند تا پرس و جوها و جهش های خود را به طور خودکار بر اساس طرحی که در خود تعریف می کنید بسازید. schema.graphql
فایل. این نه تنها احتمال خطا در تولید را کاهش میدهد، بلکه توانایی شما را برای چرخش سریعتر کد با تولید کد (کدژن) و توالیهای ساخت خودکار برای پیکربندی پایگاه داده، ذخیرهسازی و امتیازات احراز هویت در ابر بر اساس شما افزایش میدهد. نقطه پایانی API در عرض چند دقیقه.
بنابراین اگر با مشکلی روبرو شوید که پوشه /graphql را در برنامه خود نمی بینید چه اتفاقی می افتد؟
برای مرجع، من از چارچوب NEXTjs استفاده می کنم، به همین دلیل است
graphql
پوشه در/src
پوشه
اگر پرس و جوها و جهش ها را در خود دریافت نمی کنید، این راه حل برای این مشکل است /src
پوشه…
⚠️ مشکل: جهشها و کوئریهای GraphQL در پوشه اصلی برنامه شما ساخته نمیشوند.
بنابراین پس از مقداری اشکال زدایی، متوجه شدم که در فایل /amplify/backend/api/blogapp/cli-inputs.json، اینجاست که فایل .json شما به مسیر طرحواره اشاره می کند.
❌ در ابتدا، من آن را به پوشه Trash اشاره میکردم… به احتمال زیاد چون روی پروژه قبلی کار میکردم، آن را در سطل زباله قرار دادم، اما نشانگر تقویت کننده همچنان تنظیم شده بود که پروژه ریشه را دنبال کند:
{
"version": 1,
"serviceConfiguration": {
"apiName": "blogapp",
"serviceName": "AppSync",
"gqlSchemaPath": "/Users/USERNAME/.Trash/blogapp/amplify/backend/api/blogapp/schema.graphql",
"defaultAuthType": {
"mode": "API_KEY",
"expirationTime": 7
}
}
}
✅ برای رفع این مشکل، آن را دوباره کارگردانی کردم gqlSchemaPath
به محل فایل schema.graphql زیر (لینک صحیح).
این تا زمانی کار می کند که به دایرکتوری سمت راست پروژه اشاره کند:
{
"version": 1,
"serviceConfiguration": {
"apiName": "blogapp",
"serviceName": "AppSync",
"gqlSchemaPath": "/Users/USERNAME/Documents/GitHub/AWSAmplify_GraphQL_Blog/blogapp/amplify/backend/api/blogapp/schema.graphql",
"defaultAuthType": {
"mode": "API_KEY",
"expirationTime": 7
}
}
}
⚠️ وجود نداشت graphqlconfig.yml
فایل در پوشه ریشه پروژه
با پیکربندی پروژه خود برای تولید کد با کدژن، به مکانی برای ذخیره پیکربندی نیاز دارید. را graphqlconfig.yml
فایل به طور خودکار در پوشه ریشه و هنگام تولید انواع تعریف شده در شما ساخته می شود schema.graphql
فایل، کدژن عبارات GraphQL (ورودی ها) را می گیرد و انواعی را تولید می کند که می توانند بر اساس طرح (خروجی ها) استفاده شوند.
من در ابتدا یک فایل نگهدارنده داشتم:
projects:
blogapp:
schemaPath: src/graphql/schema.json
includes:
- src/graphql/**/*.js
excludes:
- ./amplify/**
extensions:
amplify:
codeGenTarget: javascript
generatedFileName: ''
docsFilePath: src/graphql
وقتی می دوم amplify push
بعداً، این به طور خودکار فایل زیر را تولید می کند:
projects:
blogapp:
schemaPath: src/graphql/schema.json
includes:
- src/graphql/**/*.js
excludes:
- ./amplify/**
extensions:
amplify:
codeGenTarget: javascript
generatedFileName: ''
docsFilePath: src/graphql
extensions:
amplify:
version: 3
هنگامی که شما طرح خود را به روز کردید و می خواهید فایل schema.graphql خود را به روز کنید، می توانید اجرا کنید:
amplify api-gql-compile
🛠 تست
البته، بدون پیاده سازی توسعه مبتنی بر آزمایش در چرخه عمر توسعه خود کجا خواهیم بود؟
یک جریان توصیه شده این خواهد بود:
- ایجاد/ویرایش طرح GraphQL
- طرحواره داده را از طریق تمسخر آزمایش کنید
- اطمینان حاصل کنید که تمام مشخصات و الزامات برآورده شده است
- فشار به ابر و ساخت خودکار
با چارچوب AWS Amplify، آزمایش نقطه پایانی GraphQL API به آسانی اجرای یک فرمان در ترمینال است:
amplify mock api
آیا چیز جدیدی در مورد AWS و ابر یاد گرفتید؟ 💭
با گذاشتن کامنت در ادامه به من اطلاع دهید! ⬇️
مشترک شدن در Tech Stack Playbook در YouTube:
https://www.youtube.com/watch?v=IOwKhN4Q49s
اگر این پست برای شما مفید بود به من اطلاع دهید! و اگر هنوز این کار را نکرده اید، حتما این منابع رایگان زیر را بررسی کنید: