Apidog

Nền tảng phát triển API hợp tác tất cả trong một

Thiết kế API

Tài liệu API

Gỡ lỗi API

Giả lập API

Kiểm thử API tự động

Cách tích hợp GraphQL với Spring Boot cho các ứng dụng hiện đại

Học cách tích hợp GraphQL với Spring Boot để phát triển API hiệu quả và linh hoạt. Hướng dẫn toàn diện này bao gồm thiết lập, các chủ đề nâng cao và lợi ích của việc sử dụng Apidog để kiểm tra và tài liệu. Hoàn hảo cho các nhà phát triển hiện đại muốn tối ưu hóa quy trình làm việc với API.

Minh Triết

Minh Triết

Updated on tháng 11 29, 2024

Chào mừng bạn đến với tương lai của phát triển API! Hôm nay, chúng ta sẽ khám phá sự kết hợp mạnh mẽ giữa Spring Boot và GraphQL. Nếu bạn là một nhà phát triển, bạn biết rằng việc tạo ra API hiệu quả, linh hoạt và có khả năng mở rộng là vô cùng quan trọng. Với sự phát triển của GraphQL, nhiều người đang từ bỏ các API REST truyền thống để chuyển sang cách tiếp cận năng động hơn này. Và không có cách nào tốt hơn để triển khai GraphQL hơn là với Spring Boot, một framework dựa trên Java giúp đơn giản hóa quy trình xây dựng các ứng dụng mạnh mẽ?

Trong bài viết này, chúng tôi sẽ khám phá cách tích hợp GraphQL với Spring Boot, tận dụng những công cụ tốt nhất trong ngành. Chúng tôi cũng sẽ nhấn mạnh cách sử dụng các công cụ như Apidog có thể nâng cao quy trình phát triển của bạn. Vậy, hãy bắt đầu nào!

💡
Nâng cao quy trình phát triển API của bạn với Apidog. Tải xuống Apidog miễn phí hôm nay và đưa các dự án GraphQL và Spring Boot của bạn lên một tầm cao mới!
button

Tại sao GraphQL?

Trước khi chúng ta đi vào chi tiết kỹ thuật, hãy hiểu tại sao GraphQL đang ngày càng trở nên phổ biến.

Trang web chính thức của GraphQL

Linh hoạt và Hiệu quả

GraphQL cho phép khách hàng yêu cầu chính xác những gì họ cần mà không cần thêm gì khác. Điều này giảm bớt lượng dữ liệu truyền tải qua mạng, làm cho ứng dụng của bạn nhanh hơn và hiệu quả hơn.

Sơ đồ kiểu mạnh

Với GraphQL, bạn định nghĩa một sơ đồ phác thảo khả năng của API của bạn. Sơ đồ này là một hợp đồng giữa khách hàng và máy chủ, đảm bảo rằng cả hai bên đều hiểu cấu trúc của dữ liệu đang được trao đổi.

Ngôn ngữ truy vấn mạnh mẽ

Ngôn ngữ truy vấn của GraphQL cực kỳ mạnh mẽ. Nó cho phép khách hàng lồng ghép các truy vấn và lấy nhiều tài nguyên trong một yêu cầu duy nhất, giảm số lượng cuộc gọi mạng và làm cho ứng dụng của bạn phản hồi tốt hơn.

Cộng đồng và Hệ sinh thái

GraphQL có một cộng đồng sôi nổi và một hệ sinh thái các công cụ và thư viện đang phát triển. Điều này có nghĩa là bạn sẽ có quyền truy cập vào một lượng lớn tài nguyên, hướng dẫn và hỗ trợ.

Bắt đầu với Spring Boot và GraphQL

Giờ khi chúng ta đã đề cập đến những điều cơ bản, hãy đi sâu vào cách thiết lập GraphQL với Spring Boot.

Logo GraphQL và Spring

Bước 1: Thiết lập dự án Spring Boot của bạn

Đầu tiên, bạn cần tạo một dự án Spring Boot. Nếu bạn đã quen thuộc với Spring Boot, bạn sẽ biết rằng việc bắt đầu rất dễ dàng. Nếu không, đừng lo, tôi sẽ giúp bạn!

Tạo một dự án mới: Sử dụng Spring Initializr để tạo một dự án Spring Boot mới. Bạn có thể làm điều này từ giao diện web tại start.spring.io.

Chọn phụ thuộc: Chọn các phụ thuộc sau:

  • Spring Web
  • Spring Boot DevTools
  • GraphQL Spring Boot Starter
  • GraphQL Spring Boot Starter Websocket (cho các đăng ký)

Giải nén dự án: Nhấp "Generate" để tải xuống dự án của bạn dưới dạng tệp ZIP. Giải nén nó và mở trong IDE yêu thích của bạn.

Spring Initializr

Bước 2: Cấu hình GraphQL trong Spring Boot

Giờ khi dự án của bạn đã được thiết lập, hãy cấu hình GraphQL.

Thêm phụ thuộc GraphQL: Nếu bạn chưa thêm các phụ thuộc GraphQL trong thiết lập ban đầu, hãy thêm chúng vào tệp pom.xml của bạn:

<dependency>
    <groupId>com.graphql-java-kickstart</groupId>
    <artifactId>graphql-spring-boot-starter</artifactId>
    <version>11.1.0</version>
</dependency>
<dependency>
    <groupId>com.graphql-java-kickstart</groupId>
    <artifactId>graphql-spring-boot-starter-websocket</artifactId>
    <version>11.1.0</version>
</dependency>

Định nghĩa Sơ đồ của bạn: Tạo một tệp schema.graphqls trong thư mục src/main/resources. Tệp này sẽ định nghĩa sơ đồ GraphQL của bạn. Đây là một ví dụ đơn giản:

type Query {
    hello: String
}

Tạo một Resolver: Trong Spring Boot, bạn tạo resolvers để xử lý các truy vấn GraphQL. Tạo một lớp HelloWorldResolver:

package com.example.demo;

import com.coxautodev.graphql.tools.GraphQLQueryResolver;
import org.springframework.stereotype.Component;

@Component
public class HelloWorldResolver implements GraphQLQueryResolver {
    public String hello() {
        return "Xin chào, Thế giới!";
    }
}

Chạy ứng dụng của bạn: Bắt đầu ứng dụng Spring Boot của bạn. Giờ đây, bạn có thể truy cập GraphQL Playground tại http://localhost:8080/graphql.

Bước 3: Kiểm tra API GraphQL của bạn

Khi API GraphQL của bạn đã hoạt động, đã đến lúc kiểm tra nó. GraphQL Playground là một công cụ tuyệt vời cho điều này. Bạn có thể gửi các truy vấn và nhìn thấy kết quả ngay lập tức.

Dưới đây là một truy vấn đơn giản để bạn bắt đầu:

{
    hello
}

Bạn sẽ thấy phản hồi:

{
  "data": {
    "hello": "Xin chào, Thế giới!"
  }
}

Nâng cao phát triển của bạn với Apidog

Mặc dù việc thiết lập GraphQL với Spring Boot là đơn giản, nhưng việc kiểm tra và tài liệu hóa các API của bạn có thể là một thách thức. Đây là nơi Apidog phát huy tác dụng.

Apidog là gì?

Apidog là một công cụ phát triển API mạnh mẽ giúp bạn thiết kế, tài liệu hóa, kiểm tra và mô phỏng các API. Nó tích hợp hoàn hảo với GraphQL, trở thành một công cụ thiết yếu cho phát triển API hiện đại.

Lợi ích của việc sử dụng Apidog

Thiết kế và Tài liệu hóa: Apidog cung cấp một giao diện trực quan để thiết kế và tài liệu hóa các API của bạn. Bạn có thể định nghĩa sơ đồ GraphQL, truy vấn và biến thể trong một môi trường thân thiện với người dùng.

Kiểm tra: Với Apidog, bạn có thể tạo và chạy các bài kiểm tra tự động cho các API GraphQL của mình. Điều này đảm bảo rằng API của bạn hoạt động như mong đợi và giúp phát hiện lỗi sớm trong quá trình phát triển.

Mô phỏng: Apidog cho phép bạn tạo các máy chủ mô phỏng cho các API của mình. Điều này đặc biệt hữu ích trong quá trình phát triển khi các dịch vụ backend có thể chưa sẵn sàng.

Hợp tác: Apidog tạo điều kiện thuận lợi cho việc hợp tác giữa các thành viên trong nhóm bằng cách cung cấp một không gian làm việc chung cho phát triển API.

Bắt đầu với Apidog

Để bắt đầu với Apidog, hãy làm theo các bước đơn giản sau:

Để tạo một yêu cầu GraphQL mới trong dự án, nhấp vào "Body" → "GraphQL" theo thứ tự.

Tạo yêu cầu GraphQL mới

Nhập truy vấn của bạn vào ô Truy vấn trên tab "Chạy". Bạn cũng có thể nhấp vào nút Fetch Schema thủ công trong ô nhập để kích hoạt tính năng "hoàn thành mã" cho biểu thức Truy vấn, hỗ trợ việc nhập các câu lệnh Truy vấn.

Yêu cầu GraphQL

Các câu lệnh truy vấn hỗ trợ việc sử dụng các biến GraphQL để yêu cầu. Đối với cách sử dụng cụ thể, vui lòng tham khảo cú pháp GraphQL.

Yêu cầu GraphQL

Bằng cách sử dụng Apidog, bạn có thể tối ưu hóa quy trình phát triển API của mình và đảm bảo rằng các API GraphQL của bạn mạnh mẽ và được tài liệu hóa tốt.

Các chủ đề nâng cao trong Spring Boot và GraphQL

Giờ khi bạn đã có kiến thức cơ bản về cách thiết lập GraphQL với Spring Boot, hãy cùng khám phá một số chủ đề nâng cao.

Phân trang và Lọc

Một trong những điểm mạnh của GraphQL là khả năng xử lý các truy vấn phức tạp. Phân trang và lọc là những yêu cầu phổ biến cho các API hiện đại.

Phân trang: Để thực hiện phân trang, bạn có thể sử dụng các thư viện như graphql-java và graphql-java-tools. Đây là một ví dụ:

type Query {
    users(page: Int, size: Int): [User]
}
public List<User> getUsers(int page, int size) {
    Pageable pageable = PageRequest.of(page, size);
    Page<User> userPage = userRepository.findAll(pageable);
    return userPage.getContent();
}

Lọc: Đối với việc lọc, bạn có thể sử dụng các loại đầu vào trong GraphQL:

input UserFilter {
    name: String
    age: Int
}

type Query {
    users(filter: UserFilter): [User]
}
public List<User> getUsers(UserFilter filter) {
    return userRepository.findByFilter(filter);
}

Xử lý Lỗi

Xử lý lỗi đúng cách là rất quan trọng cho bất kỳ API nào. Trong GraphQL, bạn có thể định nghĩa các thông điệp lỗi tùy chỉnh và sử dụng các trình xử lý ngoại lệ để quản lý lỗi một cách nhẹ nhàng.

Thông điệp lỗi tùy chỉnh: Bạn có thể định nghĩa các thông điệp lỗi tùy chỉnh trong các resolvers của bạn:

public String hello() {
    if (someCondition) {
        throw new RuntimeException("Thông điệp lỗi tùy chỉnh");
    }
    return "Xin chào, Thế giới!";
}

Trình xử lý ngoại lệ: Sử dụng cơ chế xử lý ngoại lệ của Spring để quản lý lỗi:

@ControllerAdvice
public class GraphQLExceptionHandler {

    @ExceptionHandler(RuntimeException.class)
    public GraphQLError handleRuntimeException(RuntimeException e) {
        return new GenericGraphQLError(e.getMessage());
    }
}

Đăng ký

Đăng ký GraphQL cho phép khách hàng nhận các cập nhật theo thời gian thực. Điều này đặc biệt hữu ích cho các ứng dụng cần dữ liệu trực tiếp, chẳng hạn như ứng dụng chat hoặc bảng điều khiển thời gian thực.

Cấu hình WebSocket: Đảm bảo rằng bạn đã thêm phụ thuộc graphql-spring-boot-starter-websocket.

Định nghĩa Các Đăng ký: Thêm các đăng ký vào sơ đồ của bạn:

type Subscription {
    messageAdded: Message
}

Tạo Một Nhà Xuất Bản: Sử dụng một nhà xuất bản để gửi các bản cập nhật:

@Component
public class MessagePublisher {
    private final Publisher<Message> publisher;

    public MessagePublisher(Publisher<Message> publisher) {
        this.publisher = publisher;
    }

    public void publishMessage(Message message) {
        publisher.publish(message);
    }
}

Tạo một Resolver Đăng ký: Xử lý các đăng ký trong resolver của bạn:

@Component
public class MessageSubscriptionResolver implements GraphQLSubscriptionResolver {
private final MessagePublisher messagePublisher;

    public MessageSubscriptionResolver(MessagePublisher messagePublisher) {
        this.messagePublisher = messagePublisher;
    }

    public Publisher<Message> messageAdded() {
        return messagePublisher.getPublisher();
    }
}

Kết luận

Việc tích hợp GraphQL với Spring Boot là một bước thay đổi lớn cho phát triển API. Nó cung cấp một cách linh hoạt, hiệu quả và mạnh mẽ để xây dựng các API đáp ứng yêu cầu của các ứng dụng hiện đại. Bằng cách tận dụng các công cụ như Apidog, bạn có thể tối ưu hóa quy trình phát triển của mình hơn nữa, đảm bảo rằng các API của bạn được tài liệu hóa tốt, được kiểm tra và sẵn sàng cho sản xuất.

Vậy, bạn còn chờ gì nữa? Hãy khám phá thế giới của Spring Boot và GraphQL, và xem cách nó thay đổi quy trình phát triển API của bạn. Và đừng quên tải xuống Apidog miễn phí để nâng cao trải nghiệm phát triển của bạn hơn nữa.

button