Spring Boot ile GraphQL API – 5
Bu yazımızda önceki yazılarımızda kullandığımız schema’yı genişleteceğiz. İşi daha karmaşık hale getirmeye çalışacağız. 😀
-
Entity
Blogger
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
@Data @NoArgsConstructor @AllArgsConstructor public class Blogger { private Long id; private String name; private String surname; private String email; private String password; private List<Blog> blogList; private Address address; } |
Blog
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
@Data @NoArgsConstructor @AllArgsConstructor public class Blog { private Long id; private String title; private String content; private String imageUrl; private List<Category> categoryList; } |
Address
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
@Data @NoArgsConstructor @AllArgsConstructor public class Address { private Long id; private AddressType addressType; private String addressField; } |
Category
1 2 3 4 5 6 7 8 9 10 11 12 |
@Data @NoArgsConstructor @AllArgsConstructor public class Category { private Long id; private String name; } |
2. Schema
Şimdi ise oluşturduğumuz Entity’lere göre schema dosyalarını oluşturmamız gerek. Önceki yazılarda src/main/resource altına graphql klasörü oluşturup schema dosyalarımızı oluşturmuştuk. Yeni dosyalarımızı buraya oluşturmaya devam edeceğiz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
type Address{ id: ID! addressType: AddressType! addressField: String! } enum AddressType{ OFFICE HOME } type Blog{ id: ID! title: String! content: String! imageUrl: String! categoryList: [Category] } type Blogger{ id: ID! name: String! surname: String! email: String! password: String! blogList: [Blog] address: Address gender: GenderType } extend type Query { getAllBloggers: [Blogger]! getBlogger(id: ID!): Blogger! } extend type Mutation { saveBlogger(id: ID!, name: String!, surname: String!, email: String, password: String) : Blogger! deleteBlogger(id: ID!) : Boolean updateBlogger(id: ID!, email: String!) : Blogger! } type Category{ id: ID! name: String! } enum GenderType{ MALE FEMALE } |
Yeni schema’larımız da ekledik. Yeni query’ler ekleyerek önceki yazılardaki işlemin üzerinden geçeceğiz.
3. Query
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
type Blog{ id: ID! title: String! content: String! imageUrl: String! categoryList: [Category] } extend type Query { getBlogById(id: ID!): Blog getAllBlogs : [Blog] } |
4. Resolver
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
@Service public class BlogQueryResolver implements GraphQLQueryResolver { @Autowired private BlogService service; public Blog getBlogById(Long id) { return service.getBlogById(id); } public List<Blog> getAllBlogs() { return service.getAllBlogs(); } } |
BlogService buraya eklemeyeceğim. Kodlar GitHub’da mevcut isterseniz oradan bakabilirsiniz.
Şimdi aşağıdaki query’i çağıralım.
https://github.com/cemdrman/SpringBootWithGraphQL/tree/chapter4
Faydalı olması dileğiyle.