برنامه نویسی

مشاجره طرحواره های داده 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

اگر این پست برای شما مفید بود به من اطلاع دهید! و اگر هنوز این کار را نکرده اید، حتما این منابع رایگان زیر را بررسی کنید:

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا