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:
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:
# 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:
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.
# 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:text và rails db:migrate để tạo ra bảng Post trước
Tạo một tệp mới app/graphql/types/post_type.rb
:
# 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:
# 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ụ:
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!