Rumah  >  Artikel  >  Java  >  Menggunakan GraphQL untuk pemprosesan permintaan dalam pembangunan API Java

Menggunakan GraphQL untuk pemprosesan permintaan dalam pembangunan API Java

PHPz
PHPzasal
2023-06-18 12:14:242184semak imbas

Dengan pembangunan berterusan dan populariti aplikasi web, interaksi antara muka hadapan dan belakang juga sentiasa dikemas kini dan dioptimumkan. Dengan kematangan dan aplikasi meluas Restful API, GraphQL, sebagai rangka kerja pembangunan API Web yang baru muncul, telah mula menerima lebih banyak perhatian dan aplikasi.

Artikel ini akan memperkenalkan kaedah pelaksanaan khusus menggunakan GraphQL untuk pemprosesan permintaan dalam pembangunan API Java, termasuk konsep asas GraphQL, kelebihan GraphQL, cara menggunakan GraphQL dalam Java dan cadangan untuk menggunakan GraphQL.

1. Konsep asas GraphQL

GraphQL (Graph Query Language) ialah bahasa pertanyaan API baharu yang dibangunkan oleh Facebook Ia membolehkan pelanggan menentukan data yang perlu diperolehi secara eksplisit API bahagian belakang. Ciri asas GraphQL adalah seperti berikut:

  1. Gaya reka bentuk API Deklaratif: GraphQL membenarkan pelanggan mentakrifkan set data yang perlu diperoleh, dan bahagian belakang hanya perlu menyediakan data yang sepadan.
  2. Sistem jenis yang kukuh: GraphQL menggunakan sistem jenis untuk mengesahkan dan menentukan data.
  3. Serasi dengan berbilang bahasa pengaturcaraan: GraphQL menyokong berbilang bahasa pengaturcaraan, termasuk Java, JavaScript, Python, Ruby, dll.
  4. Masa nyata: GraphQL menyokong pertanyaan masa nyata dan fungsi langganan.
  5. Keupayaan huraian kendiri: GraphQL mempunyai keupayaan untuk menerangkan sendiri, dan data yang dikembalikan melalui operasi pertanyaan juga boleh memberikan jenis dan struktur data.

2. Kelebihan GraphQL

  1. Kurangkan volum penghantaran rangkaian: GraphQL hanya mengembalikan data yang diminta oleh klien, mengurangkan volum dan volum penghantaran rangkaian yang disebabkan oleh redundansi data. Penggunaan sumber pelayan.
  2. Fleksibiliti: GraphQL sangat fleksibel Pelanggan boleh menentukan struktur data yang diperlukan dan bahagian belakang tidak perlu mengubah struktur data yang dikembalikan.
  3. Elakkan berbilang permintaan: GraphQL mengelakkan situasi memulangkan hanya satu jenis data dalam satu permintaan dengan menanyakan medan kompaun, dengan itu mengurangkan penggunaan prestasi yang disebabkan oleh berbilang permintaan.
  4. Mudah digunakan: Pertanyaan dan bahasa operasi GraphQL mudah digunakan dan dipelajari, menjadikan pemerolehan data lebih mudah dan lebih pantas.

3. Menggunakan GraphQL dalam Java

Pemaju Java boleh melengkapkan aplikasi GraphQL dengan menggunakan perpustakaan GraphQL-Java. GraphQL-Java ialah pelaksanaan Java sumber terbuka oleh komuniti GraphQL, yang menyediakan pelaksanaan protokol dan penghurai GraphQL yang lengkap. Berikut ialah langkah khusus untuk menggunakan GraphQL dalam Java:

  1. Import pustaka GraphQL-Java: Tambahkan kebergantungan berikut dalam fail pom.xml:
<dependency>
    <groupId>com.graphql-java</groupId>
    <artifactId>graphql-java</artifactId>
    <version>15.0</version>
</dependency>
  1. Definisi Skema GraphQL: Skema GraphQL mentakrifkan struktur data dan sumber data, menentukan tingkah laku dan tindak balas API.
public class HelloWorldSchema {
    public static GraphQLSchema buildSchema() {
        //定义GraphQL的查询和类型
        return GraphQLSchema.newSchema()
                .query(GraphQLObjectType.newObject()
                        .name("HelloQuery")
                        .field(field -> field
                                .type(GraphQLString)
                                .name("hello")
                                .dataFetcher(new StaticDataFetcher("world")))
                        .build())
                .build();
    }
}
  1. Konfigurasikan GraphQL: Konfigurasikan GraphQL semasa proses pemulaan aplikasi.
public class GraphQLConfig {
    @Bean
    public GraphQLServlet graphQLServlet() {
        return new SimpleGraphQLServlet.Builder(
                HelloWorldSchema.buildSchema())
                .build();
    }
}
  1. Melaksanakan sumber data GraphQL: Sumber data GraphQL menyediakan kebergantungan untuk pemerolehan data.
public class BookDataFetcher implements DataFetcher<Book> {
    private final BookRepository repository;

    public BookDataFetcher(BookRepository repository) {
        this.repository = repository;
    }

    @Override
    public Book get(DataFetchingEnvironment environment) throws Exception {
        String id = environment.getArgument("id");
        return repository.findById(id);
    }
}
  1. Mengendalikan permintaan GraphQL: Selepas permintaan tiba, kendalikan permintaan GraphQL melalui Servlet atau Controller.
@RestController
public class GraphQLController {
    private final GraphQL graphql;

    public GraphQLController(GraphQL graphql) {
        this.graphql = graphql;
    }

    @PostMapping(value = "/graphql")
    public ResponseEntity<String> handlePost(@RequestBody String request) {
        ExecutionResult executionResult = graphql.execute(request);
        return ResponseEntity.ok(executionResult.getData().toString());
    }
}

4 Cadangan untuk menggunakan GraphQL

  1. Anda perlu berhati-hati apabila menggunakan GraphQL: GraphQL boleh membawa banyak faedah, tetapi anda perlu memberi perhatian kepada keselamatan data dan masalah kebenaran apabila menggunakannya.
  2. Skema yang direka dengan baik: Definisi Skema GraphQL akan secara langsung mempengaruhi tingkah laku dan tindak balas API, jadi adalah perlu untuk mereka bentuk Skema yang jelas, ringkas dan mudah digunakan.
  3. Pertimbangan prestasi: Kerumitan pernyataan pertanyaan GraphQL dan prestasi sumber data akan mempengaruhi prestasi API, jadi anda perlu memberi perhatian kepada pertimbangan prestasi apabila melaksanakan pertanyaan GraphQL.
  4. Digabungkan dengan Restful API: GraphQL tidak perlu menggantikan sepenuhnya Restful API Ia boleh disepadukan dengan baik dengan Restful API dan sesuai untuk senario aplikasi yang berbeza.

Ringkasnya, GraphQL mempunyai banyak kelebihan dan prospek aplikasi dalam pembangunan API Web, membolehkan kami membangunkan dan menyahpepijat API dengan lebih fleksibel dan pantas. Menggunakan GraphQL dalam pembangunan Java juga sangat mudah Anda hanya perlu mengikuti langkah di atas untuk mengkonfigurasinya. Saya harap artikel ini dapat memberikan rujukan yang berharga untuk majoriti pembangun Java dalam aplikasi GraphQL.

Atas ialah kandungan terperinci Menggunakan GraphQL untuk pemprosesan permintaan dalam pembangunan API Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn