728x90 반응형 GraphQL(HotChocolate)8 .NET 6] Hot Chocolate GraphQL : subscription(7) subscription은 real-time event notification이다. 해당 기능을 위해서, subscription은 web socket을 사용한다. request pipeline에 web socket을 추가 후, subscription을 build 해보자. 1. SubscriptionType 추가 Subscription.cs using BulkyBook.Models; namespace BulkyBook.GraphQL { public class Subscription { [Subscribe] [Topic] public Author OnAuthorAdded([EventMessage] Author author) => author; } } 2. request pipeline에 websoket 추가 .. 2022. 4. 19. .NET 6] GraphQL Voyager 1. 패키지 관리자에서 아래 GraphQL.Server.Ui.Voyager를 설치한다. 2. request pipeline에 graphql voyager를 추가한다. Program.cs app.UseGraphQLVoyager(new VoyagerOptions() { GraphQLEndPoint = "/graphql" }, "/graphql-voyager"); app.Run(); 3. 프로젝트 실행후 /graphql-voyager로 접속해본다. schema를 확인할 수 있다. 4. Description 추가 [GraphQLDescription("작가")] public class Author { [Key] [DatabaseGenerated(DatabaseGeneratedOption.Identity)] pub.. 2022. 4. 19. .NET 6] Hot Chocolate GraphQL : mutation(5) Book.cs public class Author { [Key] [DatabaseGenerated(DatabaseGeneratedOption.Identity)] public int AuthorId { get; set; } [Required] public string Name { get; set; } public ICollection Books { get; set; } } public class Book { [Key] [DatabaseGenerated(DatabaseGeneratedOption.Identity)] public int BookId { get; set; } [Required] public int AuthorId { get; set; } [Required] public string Title {.. 2022. 2. 9. GraphQL vs REST 1. Over-fetching REST API를 호출 시, 내가 필요한 property를 지정할 수 없기 때문에, 필요한 것보다 더 많은 데이터를 return받는다. GraphQL은 필요한 object의 필요한 field를 query로 지정할 수 있다. Over-fetching을 피할 수 있다. 2. Under-fetching REST는 child object의 데이터를 얻기 위해, 추가로 api를 request 해야 한다. GraphQL은 child object의 field를 추가로 지정할 수 있기 때문에 한번의 호출로 원하는 child object의 데이터까지 가져올 수 있다. 3. Operation Operation GraphQL REST Read Query GET Write Mutation PUT.. 2022. 2. 9. .NET 6] Hot Chocolate GraphQL : multiple requests (4) GraphQL은 single query에 multiple operation을 지원한다. concurrency exception이 발생한다. DbContext는 thread safe하지 않다. 스레드 간에 context를 공유하지 않는다. 단일 HTTP Request 내의 여러 작업을 해야 하는 경우, AddDbContextFactory를 사용한다. context type을 직접 등록하는 대신, factory를 등록하면 새 인스턴스를 쉽게 만들 수 있다. Program.cs //builder.Services.AddDbContext(option => option.UseSqlServer( // builder.Configuration.GetConnectionString("DefaultConnection") //.. 2022. 2. 8. .NET 6] Hot Chocolate GraphQL : EF Core (3) DbContext를 사용하도록 Query class를 수정하자. public class Query { //public Book GetBook() => // new Book // { // Title = "C# in depth.", // Author = new Author // { // Name = "Jon Skeet" // } // }; public IQueryable GetBooks([Service] ApplicationDbContext context) => context.Books; } ApplicationDbContext.cs public class ApplicationDbContext : DbContext { public ApplicationDbContext(DbContextOptions optio.. 2022. 2. 8. 이전 1 2 다음 728x90 반응형