آموزش توسعه API با Hasura و GraphQL

تاریخ: 1404/7/17 ساعت: 6:21 بازدید: 34

مقدمه ای بر Hasura و GraphQL

GraphQL یک زبان کوئری برای API ها و یک ران تایم برای اجرای این کوئری ها با استفاده از داده های موجود شما است. GraphQL به کلاینت ها اجازه می دهد تا دقیقا داده هایی را که نیاز دارند درخواست کنند و هیچ داده اضافی دریافت نکنند. Hasura یک موتور GraphQL است که به شما امکان می دهد API های GraphQL را بر روی دیتابیس های موجود خود (مانند PostgreSQL، MySQL، SQL Server) ایجاد کنید.

مزایای استفاده از Hasura و GraphQL

  • بازدهی بالا: با GraphQL، کلاینت ها می توانند دقیقا داده هایی را که نیاز دارند درخواست کنند، که منجر به کاهش حجم داده های منتقل شده و بهبود عملکرد برنامه می شود.
  • توسعه سریع: Hasura به شما امکان می دهد API های GraphQL را به سرعت و به آسانی ایجاد کنید، بدون نیاز به نوشتن کد زیاد.
  • انعطاف پذیری: GraphQL به شما امکان می دهد API های خود را به راحتی گسترش دهید و تغییر دهید.
  • امنیت: Hasura دارای ویژگی های امنیتی داخلی است که به شما کمک می کند API های خود را ایمن نگه دارید.

راه اندازی Hasura

برای شروع کار با Hasura، ابتدا باید آن را نصب کنید. Hasura را می توان به روش های مختلفی نصب کرد، از جمله استفاده از Docker، Heroku، و Kubernetes. در این آموزش، از Docker استفاده خواهیم کرد.

نصب Hasura با Docker

  1. مطمئن شوید که Docker و Docker Compose بر روی سیستم شما نصب شده اند.
  2. یک فایل `docker-compose.yaml` ایجاد کنید با محتوای زیر:
  3. version: '3.6'
    services:
      postgres:
        image: postgres:12
        restart: always
        ports:
          - "5432:5432"
        volumes:
          - db_data:/var/lib/postgresql/data
        environment:
          POSTGRES_PASSWORD: mysecretpassword
      graphql-engine:
        image: hasura/graphql-engine:v2.29.0
        ports:
          - "8080:8080"
        depends_on:
          - "postgres"
        restart: always
        environment:
          HASURA_GRAPHQL_DATABASE_URL: postgres://postgres:mysecretpassword@postgres:5432/postgres
          HASURA_GRAPHQL_ENABLE_CONSOLE: "true" # set to "false" to disable console
          HASURA_GRAPHQL_ADMIN_SECRET: myadminsecretkey
    
    volumes:
      db_data:
        
  4. در ترمینال، به دایرکتوری حاوی فایل `docker-compose.yaml` بروید و دستور زیر را اجرا کنید:
  5. docker-compose up -d
  6. پس از اتمام، Hasura در آدرس `http://localhost:8080` قابل دسترسی خواهد بود.

تعریف مدل های داده

پس از راه اندازی Hasura، باید مدل های داده خود را تعریف کنید. مدل های داده، ساختار داده هایی را که در API خود استفاده خواهید کرد، تعریف می کنند. برای مثال، اگر در حال ساخت یک API برای یک وبلاگ هستید، ممکن است یک مدل داده برای پست ها و یک مدل داده برای نظرات داشته باشید.

ایجاد جداول دیتابیس

Hasura بر اساس دیتابیس شما کار می کند. برای شروع، باید جداول دیتابیس خود را ایجاد کنید. از طریق کنسول Hasura (در `http://localhost:8080`) می توانید جداول را به صورت گرافیکی ایجاد کنید، یا از طریق SQL.

به عنوان مثال، برای ایجاد جدول `posts`:

  1. به کنسول Hasura بروید و به بخش "Data" بروید.
  2. روی دیتابیس خود کلیک کنید.
  3. روی "Create Table" کلیک کنید.
  4. نام جدول را `posts` بگذارید.
  5. ستون های زیر را اضافه کنید:
    • `id` (Integer, Primary Key, Auto-Increment)
    • `title` (Text)
    • `content` (Text)
    • `created_at` (Timestamp)
  6. روی "Add Table" کلیک کنید.

ردیابی جداول در Hasura

بعد از ایجاد جدول، باید آن را در Hasura "ردیابی" کنید تا Hasura بتواند API های GraphQL را برای آن تولید کند. در کنسول Hasura، در بخش "Data"، روی جدول `posts` کلیک کنید و سپس روی دکمه "Track Table" کلیک کنید.

ساخت کوئری و میوتیشن های GraphQL

پس از تعریف مدل های داده، می توانید کوئری و میوتیشن های GraphQL را برای دسترسی به داده ها و ایجاد تغییرات در آنها ایجاد کنید. کوئری ها برای بازیابی داده ها و میوتیشن ها برای ایجاد، به روز رسانی و حذف داده ها استفاده می شوند.

کوئری ها

برای مثال، برای بازیابی تمام پست ها، می توانید از کوئری زیر استفاده کنید:

query {
  posts {
    id
    title
    content
    created_at
  }
}

این کوئری تمام فیلدهای جدول `posts` را برمی گرداند. شما می توانید فیلدهای خاصی را درخواست کنید تا حجم داده های منتقل شده را کاهش دهید.

میوتیشن ها

برای مثال، برای ایجاد یک پست جدید، می توانید از میوتیشن زیر استفاده کنید:

mutation {
  insert_posts_one(object: {title: "My New Post", content: "This is the content of my new post"}) {
    id
    title
  }
}

این میوتیشن یک پست جدید با عنوان "My New Post" و محتوای "This is the content of my new post" ایجاد می کند. میوتیشن، `id` و `title` پست جدید را برمی گرداند.

احراز هویت و مجوز

Hasura از احراز هویت و مجوز برای کنترل دسترسی به API های شما پشتیبانی می کند. شما می توانید از روش های مختلفی برای احراز هویت استفاده کنید، از جمله JSON Web Tokens (JWT) و Webhooks.

استفاده از JWT

برای استفاده از JWT، باید یک سرور احراز هویت ایجاد کنید که JWT ها را تولید کند. سپس، Hasura را پیکربندی کنید تا JWT ها را تأیید کند و بر اساس اطلاعات موجود در JWT، دسترسی به داده ها را کنترل کند.

سوالات متداول (FAQ)

  • Hasura چیست؟

    Hasura یک موتور GraphQL است که به شما امکان می دهد API های GraphQL را بر روی دیتابیس های موجود خود ایجاد کنید.

  • GraphQL چیست؟

    GraphQL یک زبان کوئری برای API ها و یک ران تایم برای اجرای این کوئری ها با استفاده از داده های موجود شما است.

  • چگونه Hasura را نصب کنم؟

    Hasura را می توان به روش های مختلفی نصب کرد، از جمله استفاده از Docker، Heroku، و Kubernetes.

  • چگونه مدل های داده را تعریف کنم؟

    مدل های داده، ساختار داده هایی را که در API خود استفاده خواهید کرد، تعریف می کنند. شما می توانید مدل های داده را با ایجاد جداول در دیتابیس خود تعریف کنید.

  • چگونه کوئری و میوتیشن های GraphQL را ایجاد کنم؟

    کوئری ها برای بازیابی داده ها و میوتیشن ها برای ایجاد، به روز رسانی و حذف داده ها استفاده می شوند. شما می توانید کوئری و میوتیشن های GraphQL را با استفاده از زبان GraphQL ایجاد کنید.

آیا به کمک برای توسعه API با Hasura و GraphQL نیاز دارید؟ همین حالا با ما تماس بگیرید!

09190994063 - 09376846692

سئو سایت خود را به ما بسپارید و شاهد رشد کسب و کارتان باشید!

نظرات کاربران