Spring Boot GraphQL API Uygulama Örneği #1
Spring’in GraphQL yayınlandı. Bu yazıda Spring GraphQL kullanacağız. 3 yazıdan olucak bu seriye giriş yapacağız ve diğer yazılarda ise veritabanı ve resolver işlemlerinden bahsedeceğiz.
GraphQL Nedir?
GraphQL kısaca Facebook tarafından geliştirilen bir Rest alternatifidir. Bu alternatifin en güçlü ve fark yaratan özellikleri ise bir istekte birden fazla metotu çağırabilmek ve isteğinizin geri dönüş değerini isteğinize göre değiştirip onu almamızı sağlamaktadır.
Spring Boot GraphQL Uygulama Örneği
Uygulamamızı yapalım. Bu uygulamada bir öğrenci uygulaması olacak ve detay bilgileri bulunacak. Bağımlılıklarımızı yükleyelim.
GraphQL Schema
Veri yapısını tanımladığız dosyaya verdiğimiz isimdir. src/main/resources/graphql
Mutation
GraphQL’e herhangi bir veri göndermek için kullandığımız yöntemdir. CRUD işlemleri yapabilmekteyiz.
Query
Sorgularımızı hazırladığımız tiplerdir.
Resolver
Query, Mutation için bir resolverlar sayesinde rilerin hangi kaynaktan nasıl alınacağı veya kaydedileceğini çözebilsin.
Shcema dosyamızı oluşturacağız. Bu dosya src/main/resources/graphql
yolu içerisinde
type Student{
id: String
name: String
}
type Mutation{
addStudent(name:String): Student
}
type Query{
getStudentById(id: String) : Student
getStudents : [Student]
}
Code language: JavaScript (javascript)
Oluşturduğumuz şema dosyamız içerisinde graphql için gerekli olan Mutation
ve Query
lerimiz ise bizim için gerekli olan sorgularımız ve sorgularımıza karşılık gelen controllerimiz ve modellerimizi oluşturacağız
Modelimizi oluşturalım.
@Data
@AllArgsConstructor
public class Student {
private String id;
private String name;
}
Code language: PHP (php)
Controllerimiz ise aşağıdaki gibi olacaktır.
@RestController
public class StudentController {
private Map<String, Student> map = new HashMap<>();
private AtomicInteger id = new AtomicInteger();
@QueryMapping
public Student getStudentById(@Argument String id) {
return map.get(id);
}
@MutationMapping
public Student addStudent(@Argument String name) {
final int id = this.id.incrementAndGet();
Student student = new Student(String.valueOf(id), name);
map.put(String.valueOf(id), student);
return student;
}
@QueryMapping
public List<Student> getStudents(){
return new ArrayList<>(map.values());
}
}
Code language: PHP (php)
Controllerimizi yazdıktan sonra projemizi çalıştıralım. GraphQL erişebilmek için application.yml
dosyamıza ekleyelim.
spring.graphql.graphiql.enabled=true
Code language: JavaScript (javascript)
Öğrenci ekleyelim.
Öğrenci arama işlemi yapalım.
Sonraki yazıda ise veritabanı işlemleri ve resolver işlemlerini inceleyeğiz.
No Comment! Be the first one.