Building a GraphQL API in Rails

Trong thế giới phát triển web, API (Giao diện Lập trình Ứng dụng) đóng vai trò quan trọng trong việc kích thích sự giao tiếp giữa các hệ thống phần mềm khác nhau. GraphQL, một ngôn ngữ truy vấn dành cho API, đã thu hút sự chú ý lớn với tính linh hoạt và hiệu suất cao trong việc truy xuất dữ liệu.

Trong bài đăng blog này, chúng ta sẽ khám phá quá trình xây dựng một GraphQL API trong Ruby on Rails, một framework mạnh mẽ và thân thiện với nhà phát triển.

GraphQL là gì?

GraphQL là một ngôn ngữ truy vấn dành cho API và là một runtime để thực hiện những truy vấn đó đối với dữ liệu của bạn. Khác với các API REST truyền thống, nơi máy khách có kiểm soát hạn chế về dữ liệu mà nó nhận được, GraphQL cho phép máy khách yêu cầu chỉ những dữ liệu cần thiết. Điều này dẫn đến quá trình truy xuất dữ liệu hiệu quả và chính xác hơn.

Thiết Lập Dự Án Rails

Trước khi đào sâu vào GraphQL, hãy thiết lập một dự án Rails mới. Mở terminal và chạy các lệnh sau:

Bash
rails new graphql_api 
cd graphql_api

Thêm Dependencies

Để tích hợp GraphQL vào dự án Rails của bạn, bạn sẽ cần thêm một số gems vào Gemfile. Mở Gemfile và bao gồm các dòng sau:

Ruby
# Gemfile 

gem 'graphql' 
gem 'graphiql-rails', group: :development

Chạy bundle install để cài đặt các gems này.

Tạo Schema GraphQL

Trong GraphQL, schema xác định các loại và các hoạt động có thể thực hiện trên dữ liệu của bạn. Hãy tạo một schema đơn giản cho ứng dụng blog. Chạy lệnh sau để tạo một schema GraphQL mới:

Bash
rails generate graphql:install

Lệnh này sẽ tạo một thư mục graphql trong thư mục dự án của bạn, chứa một tệp schema cơ bản (app/graphql/types/query_type.rb). Tùy chỉnh tệp này để xác định schema GraphQL của bạn.

Ruby
# app/graphql/types/query_type.rb 

module Types 
  class QueryType < Types::BaseObject 
    field :posts, [Types::PostType], null: false 
    
    def posts 
      Post.all
    end 
  end 
end

Định Nghĩa Các Loại

Trong ví dụ này, chúng ta đã tạo một trường posts trả về một mảng các đối tượng Post. Bạn cũng cần xác định PostType.

  • Đừng quên là hãy chạy lệnh rails generate model Post title:string content:textrails db:migrate để tạo ra bảng Post trước

Tạo một tệp mới app/graphql/types/post_type.rb:

Ruby
# app/graphql/types/post_type.rb 

module Types 
  class PostType < Types::BaseObject 
    field :id, ID, null: false 
    field :title, String, null: false 
    field :content, String, null: false 
  end 
end

Tệp này xác định cấu trúc của một loại Post với các trường id, title, và content.

Kiểm Thử với GraphiQL

GraphiQL là một công cụ đồ họa tương tác trực tuyến dành cho GraphQL giúp đơn giản hóa quá trình kiểm thử các truy vấn GraphQL của bạn. Để kích hoạt GraphiQL, mở tệp config/routes.rb và thêm các dòng sau:

Ruby
# config/routes.rb 

if Rails.env.development? 
  mount GraphiQL::Rails::Engine, at: "/graphiql", graphql_path: "/graphql" end 
  
post "/graphql", to: "graphql#execute"

Bây giờ, khi bạn chạy máy chủ Rails của mình (rails server), bạn có thể truy cập http://localhost:3000/graphiql để tương tác với GraphQL API của bạn.

Thực Hiện Các Truy Vấn

Bây giờ, bạn có thể kiểm thử các truy vấn GraphQL của mình trong GraphiQL. Ví dụ:

GraphQL
query {
  posts {
    id
    title
    content
  }
}

Truy vấn này sẽ truy xuất tất cả các bài viết cùng với các trường id, title, và content.

Chúc mừng! Bạn đã xây dựng thành công một GraphQL API trong Ruby on Rails.
Happy coding!

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like
Read More

What’s new in Ruby 3.3.0

Table of Contents Hide YJITRJITIRBRangeRails Range#overlaps?(range)Ruby < 3.3Ruby 3.3Tham khảo Là một developer có niềm đam mê sâu…