Cara menggunakan Java untuk membangunkan aplikasi antara muka API berasaskan GraphQL
GraphQL ialah bahasa pertanyaan dan persekitaran masa jalan untuk pembangunan API. Ia menyediakan cara yang berkuasa dan fleksibel untuk menentukan jenis data dan operasi pertanyaan API. Artikel ini akan memperkenalkan cara menggunakan Java untuk membangunkan aplikasi antara muka API berasaskan GraphQL dan menyediakan contoh kod khusus.
GraphQL Java library anda, yang boleh anda temui dalam pustaka Java QL anda. xml file Tambah kebergantungan berikut:
<dependency> <groupId>com.graphql-java</groupId> <artifactId>graphql-java</artifactId> <version>15.0</version> </dependency>
Tentukan Skema GraphQL
Pertama, kita perlu mentakrifkan Skema API GraphQL. Skema mentakrifkan jenis data dalam API dan operasi pertanyaan dan pengubahsuaian yang tersedia. Berikut ialah contoh mudah:
import graphql.schema.*; public class GraphQLSchemaBuilder { public static GraphQLSchema build() { GraphQLObjectType queryType = GraphQLObjectType.newObject() .name("Query") .field(field -> field.name("hello") .type(Scalars.GraphQLString) .argument(argument -> argument.name("name") .type(Scalars.GraphQLString)) .dataFetcher(environment -> { String name = environment.getArgument("name"); return "Hello, " + (name != null ? name : "World") + "!"; })) .build(); return GraphQLSchema.newSchema() .query(queryType) .build(); } }
Dalam contoh ini, kami mentakrifkan Jenis Objek bernama "Query" yang mengandungi medan bernama "hello" yang menerima parameter bernama "name" , dan mengembalikan rentetan. Kami juga menentukan dataFetcher untuk mengendalikan logik pertanyaan.
Mengendalikan pertanyaan GraphQL
Seterusnya, kita perlu memproses pertanyaan GraphQL daripada klien dan mengembalikan hasil yang sepadan. Ini boleh dicapai dengan menggunakan rangka kerja HTTP yang mengendalikan permintaan GraphQL. Berikut ialah contoh menggunakan Spring Boot:
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.web.bind.annotation.*; import javax.servlet.http.*; @SpringBootApplication @RestController public class GraphQLApplication { public static void main(String[] args) { SpringApplication.run(GraphQLApplication.class, args); } @PostMapping(value = "/graphql", consumes = "application/json", produces = "application/json") public String graphql(@RequestBody String query, HttpServletRequest request) { ExecutionResult result = new GraphQL(GraphQLSchemaBuilder.build()).execute(query); return result.toSpecification(); } }
Dalam contoh ini, kami menggunakan anotasi Spring Boot @RestController untuk mengendalikan permintaan GraphQL. Kami memetakan permintaan POST ke laluan "/graphql" dan menyediakan kaedah untuk mengendalikan permintaan tersebut. Dalam kaedah pemprosesan, kami mendapat rentetan pertanyaan yang diluluskan oleh klien dan melaksanakan pertanyaan menggunakan perpustakaan Java GraphQL. Akhir sekali, kami menukar hasil pelaksanaan kepada rentetan JSON dan mengembalikannya kepada klien.
Menghantar pertanyaan GraphQL
Kini, kami boleh menggunakan klien GraphQL untuk menghantar pertanyaan ke antara muka API kami. Berikut ialah contoh menghantar pertanyaan menggunakan cURL:
$ curl -X POST -H "Content-Type: application/json" -d '{"query":"{hello(name: "GraphQL")}"}' http://localhost:8080/graphql
Permintaan ini akan menghantar pertanyaan dengan medan pertanyaan "hello" dan menghantar parameter bernama "nama". Pelayan akan mengembalikan respons JSON yang mengandungi hasil pelaksanaan.
Ringkasan
Dengan menggunakan Java dan perpustakaan Java GraphQL, kami boleh membangunkan aplikasi antara muka API berasaskan GraphQL dengan mudah. Dalam artikel ini, kami memperkenalkan cara untuk mentakrifkan Skema GraphQL, mengendalikan pertanyaan GraphQL dan menyediakan contoh kod khusus. Saya harap artikel ini dapat membantu anda memulakan pembangunan GraphQL.
Atas ialah kandungan terperinci Cara menggunakan Java untuk membangunkan aplikasi antara muka API berasaskan GraphQL. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!