SlideShare ist ein Scribd-Unternehmen logo
1 von 97
Downloaden Sie, um offline zu lesen
@MarkLechtermann
Mark Lechtermann
@MarkLechtermann
GraphQL with .NET CORE
@MarkLechtermann
What‘s wrong with REST?
@MarkLechtermann
Architectural Styles and the Design of
Network-based Software Architectures
DISSERTATION
DOCTOR OF PHILOSOPHY
Roy Thomas Fielding
2000
@MarkLechtermann
@MarkLechtermann
2000
@MarkLechtermann
@MarkLechtermann
The internet in the year 2000
@MarkLechtermann
not before 2002
@MarkLechtermann
not before 2004
@MarkLechtermann
2019
@MarkLechtermann
2000 vs 2019
@MarkLechtermann
Web 2000
GET http://example.com
static HTML
@MarkLechtermann
Web 2000
GET http://example.com
static HTML
@MarkLechtermann
Web 2019
I want JSON!
I want HTML!
I want JS!
I want IOT data!
I want a stream!
@MarkLechtermann
Web 2019
I want JSON!
I want HTML!
I want JS!
I want IOT data!
I want a stream!
@MarkLechtermann
Again: What‘s wrong with REST?
@MarkLechtermann
Over-fetching
GET http://example.com/api/v1/whiskys/1
{
"name":"ArdbegTEN",
"strength":46,
"distillery":"Ardbeg",
"size":"700 ml",
"prize":45.00,
…
}
@MarkLechtermann
Over-fetching
GET http://example.com/api/v1/whiskys/1
{
"name":"ArdbegTEN",
"strength":46,
"distillery":"Ardbeg",
"size":"700 ml",
"prize":45.00,
…
}
But all I wanted
was the prize!
@MarkLechtermann
Under-fetching
GET http://example.com/api/v1/whiskys
"items":[
"http://example.com/api/v1/whiskys/1"
"http://example.com/api/v1/whiskys/2"
…
]
GET http://example.com/api/v1/whiskys/1
GET http://example.com/api/v1/whiskys/2
...
@MarkLechtermann
Under-fetching
GET http://example.com/api/v1/whiskys
"items":[
"http://example.com/api/v1/whiskys/1"
"http://example.com/api/v1/whiskys/2"
…
]
GET http://example.com/api/v1/whiskys/1
GET http://example.com/api/v1/whiskys/2
...
But all I wanted
was a list of names!
@MarkLechtermann
REST Properties
● Performance
● Reliability
● Simplicity
● Scalability
● Modifiability
● Portability
@MarkLechtermann
REST Benefits
● Performance (with HTTP2)
● Well-established
● Media types
● Decoupling server and client
@MarkLechtermann
The problem with REST
● Difficult to implement correctly
● Tooling for clients
● API description format
– Swagger, RAML, API Blueprint, Odata...?
● It's not a Standard
@MarkLechtermann
We call it a "REST"-API
@MarkLechtermann
Richardson Maturity Model
HATEOAS
HTTP Verbs
Resources
Swamp of POX
@MarkLechtermann
Let's be honest!
HATEOAS?
@MarkLechtermann
But what about OpenAPI/Swagger?
@MarkLechtermann
OpenAPI/Swagger kills Hypermedia!
@MarkLechtermann
Nobody stops us from
using the endpoint directly!
@MarkLechtermann
REST without Hypermedia
is CRUD over HTTP!
@MarkLechtermann
@MarkLechtermann
@MarkLechtermann
react.js conf 2015
not only for React!
@MarkLechtermann
Knots and Edges
not
Resources
@MarkLechtermann
Spec
● https://graphql.github.io/graphql-spec/
● Latest stable version
– June 2018
@MarkLechtermann
Let's build an App
@MarkLechtermann
Whisky Distillery
0..1
*
WhiskyApp
@MarkLechtermann
Whisky Distillery
0..1
*
WhiskyApp
Iknow!
Independentbottler,blends,…
butKISS!
@MarkLechtermann
Whisky
+Name : string
+Age : uint
+Strength: float
+ Size: uint
Distillery
+Name : string
+Owner : string
+SpiritStills : uint
+WashStills : uint
+Capacity : uint64
+Region : string
0..1
*
WhiskyApp
@MarkLechtermann
@MarkLechtermann
@MarkLechtermann
We need
Components!
@MarkLechtermann
whiskys
@MarkLechtermann
whiskys
name
age
@MarkLechtermann
whiskys
name
age
distillery
@MarkLechtermann
whiskys
name
age
distillery
name
owner
@MarkLechtermann
{
whiskys {
name
age
distillery {
name
owner
}
}
}
@MarkLechtermann
{
whiskys {
name
age
distillery {
name
owner
}
}
}
GraphQL
Query
APPROVED
@MarkLechtermann
@MarkLechtermann
A query language for your API
@MarkLechtermann
GraphQL Feature
● Query
● Mutation
● Subscription
@MarkLechtermann
Schema
@MarkLechtermann
Schema
schema {
query: WhiskyRootQuery
mutation: WhiskyRootMutation
}
@MarkLechtermann
Scalar Types
type Whisky {
MyField1 : ID // unique identifier String
MyField2 : Int
MyField3 : Float // signed double-precision
MyField4 : String // UTF-8
MyField5 : Boolean
}
@MarkLechtermann
Type
type WhiskyRootQuery {
whiskys: [Whisky]
whisky(id: ID): Whisky
}
@MarkLechtermann
Lists and Non-Null
type WhiskyRootQuery {
whiskys: [whisky!]!
whisky(id: ID!): whisky
}
@MarkLechtermann
Interfaces
interface Drink {
id: ID!
name: String!
}
@MarkLechtermann
Implements Interface
type Whisky implements Drink {
region: WhiskyRegion
}
@MarkLechtermann
Enumerations
enum WhiskyRegion {
LOWLANDS
HIGHLANDS
SPEYSIDE
CAMPELTOWN
ISLAY
THE ISLANDS
}
@MarkLechtermann
Query
@MarkLechtermann
Query
query {
whiskys {
id
name
}
}
"data" {
"whiskys" : [
{
"id" : "1",
"name": "Ardbeg Ten"
}
]
}
@MarkLechtermann
Query
{
whiskys {
id
name
}
}
"data" {
"whiskys" : [
{
"id" : "1",
"name": "Ardbeg Ten"
}
]
}
@MarkLechtermann
Query with Arguments
{
whisky(id: "1") {
id
name
}
}
"data" {
"whisky" : {
"id" : "1",
"name": "Ardbeg Ten"
}
}
@MarkLechtermann
Alias
{
first : whisky(id:"1") {
name
}
second : whisky(id:"2") {
name
}
}
{
"data": {
"first": {
"name": "Ardbeg TEN"
},
"second": {
"name": "Ardbeg Uigeadail"
}
}
}
@MarkLechtermann
Fragments
{
first : whisky(id:"1") {
...myFields
}
second : whisky(id:"2") {
...myFields
}
}
fragment myFields on WhiskyType{
name
id
strength
}
{
"data": {
"first": {
"name": "Ardbeg TEN",
"id": "1",
"strength": 46
},
…
}
}
@MarkLechtermann
Variables
query Compare($a: ID!, $b: ID!){
first : whisky(id:$a) {
...myFields
}
second : whisky(id:$b) {
...myFields
}
}
fragment myFields on WhiskyType {
name
id
strength
}
{
"data": {
"first": {
"name": "Ardbeg TEN",
"id": "1",
"strength": 46
},
…
}
}
@MarkLechtermann
Directives - include
query GetWhisky($id: ID!, $dInfo: Boolean = false) {
whisky(id:$id) {
id
name
destillery @include(if: $dInfo) {
name
}
}
}
{"id": "1", "dInfo": true}
{
"data": {
"whisky" : {
"id" : "12,
"name" : "Ardbeg TEN"
"destillery" : {
"name" : "Ardbeg"
}
}
}
}
@MarkLechtermann
Directives - skip
query GetWhisky($id: ID!, $dInfo: Boolean = false) {
whisky(id:$id) {
id
name
destillery @skip(if: $dInfo) {
name
}
}
}
{"id": "1", "dInfo": true}
{
"data": {
"whisky": {
"id": 1,
"name": "Ardbeg TEN",
}
}
}
@MarkLechtermann
Mutation
@MarkLechtermann
mutation
mutation {
deleteWhisky(id: "1")
}
{
"data" : {
"deleteWhisky" : true
}
}
@MarkLechtermann
mutation
mutation {
addWhisky(
destilleryId : "1"
whisky : {
name : "MyWhisky"
age : 0
size : 70
strength : 40
}
) {
id
name
}
}
{
"data" : {
"addWhisky" : {
"id" : "123",
"name" : "MyWhisky",
}
}
}
@MarkLechtermann
Let‘s start with .NET Core
@MarkLechtermann
.NET Libraries
● graphql-dotnet/graphql-dotnet (~3000)
● ckimes89/graphql-net ( ~700)
● ChilliCream/hotchocolate ( ~300)
@MarkLechtermann
We use
graphql-dotnet/graphql-dotnet
in this example
@MarkLechtermann
Code First
or
Schema First
@MarkLechtermann
$ dotnet new webapi
$ dotnet add package GraphQL
$ dotnet add package GraphQL.Server.Transports.AspNetCore
# Optional:
$ dotnet add package GraphQL.Server.Ui.GraphiQL
$ dotnet add package GraphQL.Server.Ui.Playground
$ dotnet add package GraphQL.Server.Ui.Voyager
Create a new project
@MarkLechtermann
public class WhiskyType : ObjectGraphType<WhiskyEntity>
{
public WhiskyType()
{
Field<NonNullGraphType<IdGraphType>>().Name("id");
Field(entity => entity.Name).Description("");
}
}
Add Types
@MarkLechtermann
public class WhiskyQuery : ObjectGraphType
{
public WhiskyQuery()
{
this.Field<WhiskyType>(
name: "whisky",
resolve: context => new WhiskyType());
}
Add Query
@MarkLechtermann
public class WhiskyAppSchema : Schema
{
public WhiskyAppSchema(IDependencyResolver resolver)
: base(resolver)
{
Query = resolver.Resolve<WhiskyQuery>();
Mutation = ...
}
}
Add a Schema
@MarkLechtermann
public void ConfigureServices(IServiceCollection services)
{
services.AddScoped<WhiskyType>();
services.AddScoped<WhiskyQuery>();
services.AddScoped<ISchema, WhiskyAppSchema>();
services.AddScoped<IDependencyResolver>(
s => new FuncDependencyResolver(s.GetRequiredService));
services.AddSingleton<IDocumentExecuter, DocumentExecuter>();
services.AddSingleton<IDocumentWriter, DocumentWriter>();
services.AddGraphQL();
}
Add Services
@MarkLechtermann
app.UseGraphQL<ISchema>("/graphql");
// Optional:
app.UseGraphiQLServer(new GraphiQLOptions());
app.UseGraphQLPlayground(new GraphQLPlaygroundOptions());
app.UseGraphQLVoyager(new GraphQLVoyagerOptions());
Add Middleware
@MarkLechtermann
N + 1 Problem and Batching!
@MarkLechtermann
Use a Dataloader
@MarkLechtermann
services.AddSingleton<IDataLoaderContextAccessor,
DataLoaderContextAccessor>();
services.AddSingleton<DataLoaderDocumentListener>();
DataLoader - Services
@MarkLechtermann
public WhiskyType( IDataLoaderContextAccessor accessor)
{
…
Field<DestilleryType, DestilleryEntity>()
.Name("destillery")
.ResolveAsync(context => {
var loader = accessor.Context.GetOrAddBatchLoader<string,
DestilleryEntity>("whisky_destillery", ... );
return loader.LoadAsync(context.Source.Id);
});
}
DataLoader
@MarkLechtermann
Pro GraphQL
● Easy to learn
● Vendor agnostic
● Pragmatic
● Contract
● Introspection
@MarkLechtermann
Contra GraphQL
● Content negotiation
● Media type support
● Caching
● "Only" POST
– What about GET, DELETE, PUT?
@MarkLechtermann
API Gateway
REST
JSON over HTTP
OData
gRPC
@MarkLechtermann
What are the alternatives?
@MarkLechtermann
REST! ;-) ...
@MarkLechtermann
… with OData
@MarkLechtermann
OData @ Build 2019
● Microsoft PowerApps
– https://docs.microsoft.com/en-us/powerapps/developer/common-data-service/webapi/overview
● Build2019: Microsoft Graph powers the Microsoft 365 platform
– https://developer.microsoft.com/en-us/office/blogs/build-2019-microsoft-graph-powers-the-microsoft-365-platform/
● Graph Explorer
– https://developer.microsoft.com/en-us/graph/graph-explorer
● Expamples:
– https://graph.microsoft.com/v1.0/me/?$select=givenName
– https://graph.microsoft.com/v1.0/me?$select= displayName, skills
@MarkLechtermann
Contra OData
● Strong coupling with the database
● Query only with GET
– Long and complex URL
@MarkLechtermann
docker run -p 5000:5000
marklechtermann/whiskygraphqlapp
Docker Image
@MarkLechtermann
https://github.com/marklechtermann/
whiskygraphqlapp
Source Code
@MarkLechtermann
Thanks!
Any Questions?

Weitere ähnliche Inhalte

Ähnlich wie GraphQL with .NET Core

Buildingplatforms
BuildingplatformsBuildingplatforms
Buildingplatformscodebits
 
API Technical Writing
API Technical WritingAPI Technical Writing
API Technical WritingSarah Maddox
 
LarKC Tutorial at ISWC 2009 - Second Hands-on Scenario
LarKC Tutorial at ISWC 2009 - Second Hands-on ScenarioLarKC Tutorial at ISWC 2009 - Second Hands-on Scenario
LarKC Tutorial at ISWC 2009 - Second Hands-on ScenarioLarKC
 
Ontotext's GraphDB Connectors
Ontotext's GraphDB ConnectorsOntotext's GraphDB Connectors
Ontotext's GraphDB Connectorslogomachy
 
Moving from Web 1.0 to Web 2.0
Moving from Web 1.0 to Web 2.0Moving from Web 1.0 to Web 2.0
Moving from Web 1.0 to Web 2.0Estelle Weyl
 
apidays LIVE New York - API Code First vs Design First by Phil Sturgeon
apidays LIVE New York - API Code First vs Design First by Phil Sturgeonapidays LIVE New York - API Code First vs Design First by Phil Sturgeon
apidays LIVE New York - API Code First vs Design First by Phil Sturgeonapidays
 
GTLAB Installation Tutorial for SciDAC 2009
GTLAB Installation Tutorial for SciDAC 2009GTLAB Installation Tutorial for SciDAC 2009
GTLAB Installation Tutorial for SciDAC 2009marpierc
 
Taming WebSocket with Scarlet
Taming WebSocket with ScarletTaming WebSocket with Scarlet
Taming WebSocket with ScarletZhixuan Lai
 
Open Social Summit Korea Overview
Open Social Summit Korea OverviewOpen Social Summit Korea Overview
Open Social Summit Korea OverviewChris Schalk
 
Orbitz and Spring Webflow Case Study
Orbitz and Spring Webflow Case StudyOrbitz and Spring Webflow Case Study
Orbitz and Spring Webflow Case StudyMark Meeker
 
BNC Tech Forum 09: Lexcycle Stanza demo
BNC Tech Forum 09: Lexcycle Stanza demoBNC Tech Forum 09: Lexcycle Stanza demo
BNC Tech Forum 09: Lexcycle Stanza demoBookNet Canada
 
IE 8 et les standards du Web - Chris Wilson - Paris Web 2008
IE 8 et les standards du Web - Chris Wilson - Paris Web 2008IE 8 et les standards du Web - Chris Wilson - Paris Web 2008
IE 8 et les standards du Web - Chris Wilson - Paris Web 2008Association Paris-Web
 
Baremetal deployment
Baremetal deploymentBaremetal deployment
Baremetal deploymentbaremetal
 
DevOps Fest 2019. Gianluca Arbezzano. DevOps never sleeps. What we learned fr...
DevOps Fest 2019. Gianluca Arbezzano. DevOps never sleeps. What we learned fr...DevOps Fest 2019. Gianluca Arbezzano. DevOps never sleeps. What we learned fr...
DevOps Fest 2019. Gianluca Arbezzano. DevOps never sleeps. What we learned fr...DevOps_Fest
 
Grails Introduction - IJTC 2007
Grails Introduction - IJTC 2007Grails Introduction - IJTC 2007
Grails Introduction - IJTC 2007Guillaume Laforge
 
Apache Flink Adoption @ Shopify
Apache Flink Adoption @ ShopifyApache Flink Adoption @ Shopify
Apache Flink Adoption @ ShopifyKevinLam737856
 
Apache Flink Adoption at Shopify With Kevin Lam | Current 2022
Apache Flink Adoption at Shopify With Kevin Lam | Current 2022Apache Flink Adoption at Shopify With Kevin Lam | Current 2022
Apache Flink Adoption at Shopify With Kevin Lam | Current 2022HostedbyConfluent
 

Ähnlich wie GraphQL with .NET Core (20)

Buildingplatforms
BuildingplatformsBuildingplatforms
Buildingplatforms
 
API Technical Writing
API Technical WritingAPI Technical Writing
API Technical Writing
 
LarKC Tutorial at ISWC 2009 - Second Hands-on Scenario
LarKC Tutorial at ISWC 2009 - Second Hands-on ScenarioLarKC Tutorial at ISWC 2009 - Second Hands-on Scenario
LarKC Tutorial at ISWC 2009 - Second Hands-on Scenario
 
Building GraphQL API in C#.pptx
Building GraphQL API in C#.pptxBuilding GraphQL API in C#.pptx
Building GraphQL API in C#.pptx
 
Ontotext's GraphDB Connectors
Ontotext's GraphDB ConnectorsOntotext's GraphDB Connectors
Ontotext's GraphDB Connectors
 
Moving from Web 1.0 to Web 2.0
Moving from Web 1.0 to Web 2.0Moving from Web 1.0 to Web 2.0
Moving from Web 1.0 to Web 2.0
 
apidays LIVE New York - API Code First vs Design First by Phil Sturgeon
apidays LIVE New York - API Code First vs Design First by Phil Sturgeonapidays LIVE New York - API Code First vs Design First by Phil Sturgeon
apidays LIVE New York - API Code First vs Design First by Phil Sturgeon
 
GTLAB Installation Tutorial for SciDAC 2009
GTLAB Installation Tutorial for SciDAC 2009GTLAB Installation Tutorial for SciDAC 2009
GTLAB Installation Tutorial for SciDAC 2009
 
Let's talk about GraphQL
Let's talk about GraphQLLet's talk about GraphQL
Let's talk about GraphQL
 
Taming WebSocket with Scarlet
Taming WebSocket with ScarletTaming WebSocket with Scarlet
Taming WebSocket with Scarlet
 
Open Social Summit Korea Overview
Open Social Summit Korea OverviewOpen Social Summit Korea Overview
Open Social Summit Korea Overview
 
Lecture 9 Professional Practices
Lecture 9 Professional PracticesLecture 9 Professional Practices
Lecture 9 Professional Practices
 
Orbitz and Spring Webflow Case Study
Orbitz and Spring Webflow Case StudyOrbitz and Spring Webflow Case Study
Orbitz and Spring Webflow Case Study
 
BNC Tech Forum 09: Lexcycle Stanza demo
BNC Tech Forum 09: Lexcycle Stanza demoBNC Tech Forum 09: Lexcycle Stanza demo
BNC Tech Forum 09: Lexcycle Stanza demo
 
IE 8 et les standards du Web - Chris Wilson - Paris Web 2008
IE 8 et les standards du Web - Chris Wilson - Paris Web 2008IE 8 et les standards du Web - Chris Wilson - Paris Web 2008
IE 8 et les standards du Web - Chris Wilson - Paris Web 2008
 
Baremetal deployment
Baremetal deploymentBaremetal deployment
Baremetal deployment
 
DevOps Fest 2019. Gianluca Arbezzano. DevOps never sleeps. What we learned fr...
DevOps Fest 2019. Gianluca Arbezzano. DevOps never sleeps. What we learned fr...DevOps Fest 2019. Gianluca Arbezzano. DevOps never sleeps. What we learned fr...
DevOps Fest 2019. Gianluca Arbezzano. DevOps never sleeps. What we learned fr...
 
Grails Introduction - IJTC 2007
Grails Introduction - IJTC 2007Grails Introduction - IJTC 2007
Grails Introduction - IJTC 2007
 
Apache Flink Adoption @ Shopify
Apache Flink Adoption @ ShopifyApache Flink Adoption @ Shopify
Apache Flink Adoption @ Shopify
 
Apache Flink Adoption at Shopify With Kevin Lam | Current 2022
Apache Flink Adoption at Shopify With Kevin Lam | Current 2022Apache Flink Adoption at Shopify With Kevin Lam | Current 2022
Apache Flink Adoption at Shopify With Kevin Lam | Current 2022
 

Mehr von Mark Lechtermann

Knative with .NET Core and Quarkus with GraalVM
Knative with .NET Core and Quarkus with GraalVMKnative with .NET Core and Quarkus with GraalVM
Knative with .NET Core and Quarkus with GraalVMMark Lechtermann
 
Microsoft Connect 2018 .NET User Group Paderborn
Microsoft Connect 2018 .NET User Group PaderbornMicrosoft Connect 2018 .NET User Group Paderborn
Microsoft Connect 2018 .NET User Group PaderbornMark Lechtermann
 
DevOps - Experimentieren aber wie? - Björn Senft
DevOps - Experimentieren aber wie? - Björn SenftDevOps - Experimentieren aber wie? - Björn Senft
DevOps - Experimentieren aber wie? - Björn SenftMark Lechtermann
 
Short introduction - .net core and .net standard 2.0
Short introduction - .net core and .net standard 2.0Short introduction - .net core and .net standard 2.0
Short introduction - .net core and .net standard 2.0Mark Lechtermann
 
DevOps: Automatisierte Deployments mit TFS & Octopus Deploy
DevOps: Automatisierte Deployments mit TFS & Octopus DeployDevOps: Automatisierte Deployments mit TFS & Octopus Deploy
DevOps: Automatisierte Deployments mit TFS & Octopus DeployMark Lechtermann
 
6. Treffen der .NET User Group Paderborn
6. Treffen der .NET User Group Paderborn6. Treffen der .NET User Group Paderborn
6. Treffen der .NET User Group PaderbornMark Lechtermann
 
5. Treffen der .NET User Group Paderborn
5. Treffen der .NET User Group Paderborn5. Treffen der .NET User Group Paderborn
5. Treffen der .NET User Group PaderbornMark Lechtermann
 

Mehr von Mark Lechtermann (9)

Knative with .NET Core and Quarkus with GraalVM
Knative with .NET Core and Quarkus with GraalVMKnative with .NET Core and Quarkus with GraalVM
Knative with .NET Core and Quarkus with GraalVM
 
Microsoft Connect 2018 .NET User Group Paderborn
Microsoft Connect 2018 .NET User Group PaderbornMicrosoft Connect 2018 .NET User Group Paderborn
Microsoft Connect 2018 .NET User Group Paderborn
 
MQTT with .NET Core
MQTT with .NET CoreMQTT with .NET Core
MQTT with .NET Core
 
DevOps - Experimentieren aber wie? - Björn Senft
DevOps - Experimentieren aber wie? - Björn SenftDevOps - Experimentieren aber wie? - Björn Senft
DevOps - Experimentieren aber wie? - Björn Senft
 
Electron
ElectronElectron
Electron
 
Short introduction - .net core and .net standard 2.0
Short introduction - .net core and .net standard 2.0Short introduction - .net core and .net standard 2.0
Short introduction - .net core and .net standard 2.0
 
DevOps: Automatisierte Deployments mit TFS & Octopus Deploy
DevOps: Automatisierte Deployments mit TFS & Octopus DeployDevOps: Automatisierte Deployments mit TFS & Octopus Deploy
DevOps: Automatisierte Deployments mit TFS & Octopus Deploy
 
6. Treffen der .NET User Group Paderborn
6. Treffen der .NET User Group Paderborn6. Treffen der .NET User Group Paderborn
6. Treffen der .NET User Group Paderborn
 
5. Treffen der .NET User Group Paderborn
5. Treffen der .NET User Group Paderborn5. Treffen der .NET User Group Paderborn
5. Treffen der .NET User Group Paderborn
 

Kürzlich hochgeladen

VIP Kolkata Call Girls Salt Lake 8250192130 Available With Room
VIP Kolkata Call Girls Salt Lake 8250192130 Available With RoomVIP Kolkata Call Girls Salt Lake 8250192130 Available With Room
VIP Kolkata Call Girls Salt Lake 8250192130 Available With Roomgirls4nights
 
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
AlbaniaDreamin24 - How to easily use an API with Flows
AlbaniaDreamin24 - How to easily use an API with FlowsAlbaniaDreamin24 - How to easily use an API with Flows
AlbaniaDreamin24 - How to easily use an API with FlowsThierry TROUIN ☁
 
VIP Call Girls Kolkata Ananya 🤌 8250192130 🚀 Vip Call Girls Kolkata
VIP Call Girls Kolkata Ananya 🤌  8250192130 🚀 Vip Call Girls KolkataVIP Call Girls Kolkata Ananya 🤌  8250192130 🚀 Vip Call Girls Kolkata
VIP Call Girls Kolkata Ananya 🤌 8250192130 🚀 Vip Call Girls Kolkataanamikaraghav4
 
Call Girls Service Chandigarh Lucky ❤️ 7710465962 Independent Call Girls In C...
Call Girls Service Chandigarh Lucky ❤️ 7710465962 Independent Call Girls In C...Call Girls Service Chandigarh Lucky ❤️ 7710465962 Independent Call Girls In C...
Call Girls Service Chandigarh Lucky ❤️ 7710465962 Independent Call Girls In C...Sheetaleventcompany
 
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
Moving Beyond Twitter/X and Facebook - Social Media for local news providers
Moving Beyond Twitter/X and Facebook - Social Media for local news providersMoving Beyond Twitter/X and Facebook - Social Media for local news providers
Moving Beyond Twitter/X and Facebook - Social Media for local news providersDamian Radcliffe
 
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...Diya Sharma
 
Call Girls In Sukhdev Vihar Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Sukhdev Vihar Delhi 💯Call Us 🔝8264348440🔝Call Girls In Sukhdev Vihar Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Sukhdev Vihar Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
AWS Community DAY Albertini-Ellan Cloud Security (1).pptx
AWS Community DAY Albertini-Ellan Cloud Security (1).pptxAWS Community DAY Albertini-Ellan Cloud Security (1).pptx
AWS Community DAY Albertini-Ellan Cloud Security (1).pptxellan12
 
Call Girls Dubai Prolapsed O525547819 Call Girls In Dubai Princes$
Call Girls Dubai Prolapsed O525547819 Call Girls In Dubai Princes$Call Girls Dubai Prolapsed O525547819 Call Girls In Dubai Princes$
Call Girls Dubai Prolapsed O525547819 Call Girls In Dubai Princes$kojalkojal131
 
Hot Service (+9316020077 ) Goa Call Girls Real Photos and Genuine Service
Hot Service (+9316020077 ) Goa  Call Girls Real Photos and Genuine ServiceHot Service (+9316020077 ) Goa  Call Girls Real Photos and Genuine Service
Hot Service (+9316020077 ) Goa Call Girls Real Photos and Genuine Servicesexy call girls service in goa
 
Chennai Call Girls Alwarpet Phone 🍆 8250192130 👅 celebrity escorts service
Chennai Call Girls Alwarpet Phone 🍆 8250192130 👅 celebrity escorts serviceChennai Call Girls Alwarpet Phone 🍆 8250192130 👅 celebrity escorts service
Chennai Call Girls Alwarpet Phone 🍆 8250192130 👅 celebrity escorts servicevipmodelshub1
 
Best VIP Call Girls Noida Sector 75 Call Me: 8448380779
Best VIP Call Girls Noida Sector 75 Call Me: 8448380779Best VIP Call Girls Noida Sector 75 Call Me: 8448380779
Best VIP Call Girls Noida Sector 75 Call Me: 8448380779Delhi Call girls
 
VIP Kolkata Call Girl Dum Dum 👉 8250192130 Available With Room
VIP Kolkata Call Girl Dum Dum 👉 8250192130  Available With RoomVIP Kolkata Call Girl Dum Dum 👉 8250192130  Available With Room
VIP Kolkata Call Girl Dum Dum 👉 8250192130 Available With Roomdivyansh0kumar0
 
FULL ENJOY Call Girls In Mayur Vihar Delhi Contact Us 8377087607
FULL ENJOY Call Girls In Mayur Vihar Delhi Contact Us 8377087607FULL ENJOY Call Girls In Mayur Vihar Delhi Contact Us 8377087607
FULL ENJOY Call Girls In Mayur Vihar Delhi Contact Us 8377087607dollysharma2066
 

Kürzlich hochgeladen (20)

VIP Kolkata Call Girls Salt Lake 8250192130 Available With Room
VIP Kolkata Call Girls Salt Lake 8250192130 Available With RoomVIP Kolkata Call Girls Salt Lake 8250192130 Available With Room
VIP Kolkata Call Girls Salt Lake 8250192130 Available With Room
 
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
 
AlbaniaDreamin24 - How to easily use an API with Flows
AlbaniaDreamin24 - How to easily use an API with FlowsAlbaniaDreamin24 - How to easily use an API with Flows
AlbaniaDreamin24 - How to easily use an API with Flows
 
Call Girls In South Ex 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SERVICE
Call Girls In South Ex 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SERVICECall Girls In South Ex 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SERVICE
Call Girls In South Ex 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SERVICE
 
VIP Call Girls Kolkata Ananya 🤌 8250192130 🚀 Vip Call Girls Kolkata
VIP Call Girls Kolkata Ananya 🤌  8250192130 🚀 Vip Call Girls KolkataVIP Call Girls Kolkata Ananya 🤌  8250192130 🚀 Vip Call Girls Kolkata
VIP Call Girls Kolkata Ananya 🤌 8250192130 🚀 Vip Call Girls Kolkata
 
Call Girls Service Chandigarh Lucky ❤️ 7710465962 Independent Call Girls In C...
Call Girls Service Chandigarh Lucky ❤️ 7710465962 Independent Call Girls In C...Call Girls Service Chandigarh Lucky ❤️ 7710465962 Independent Call Girls In C...
Call Girls Service Chandigarh Lucky ❤️ 7710465962 Independent Call Girls In C...
 
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Defence Colony Delhi 💯Call Us 🔝8264348440🔝
 
Moving Beyond Twitter/X and Facebook - Social Media for local news providers
Moving Beyond Twitter/X and Facebook - Social Media for local news providersMoving Beyond Twitter/X and Facebook - Social Media for local news providers
Moving Beyond Twitter/X and Facebook - Social Media for local news providers
 
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
 
Rohini Sector 22 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
Rohini Sector 22 Call Girls Delhi 9999965857 @Sabina Saikh No AdvanceRohini Sector 22 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
Rohini Sector 22 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
 
Call Girls In Sukhdev Vihar Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Sukhdev Vihar Delhi 💯Call Us 🔝8264348440🔝Call Girls In Sukhdev Vihar Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Sukhdev Vihar Delhi 💯Call Us 🔝8264348440🔝
 
Rohini Sector 26 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
Rohini Sector 26 Call Girls Delhi 9999965857 @Sabina Saikh No AdvanceRohini Sector 26 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
Rohini Sector 26 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
 
AWS Community DAY Albertini-Ellan Cloud Security (1).pptx
AWS Community DAY Albertini-Ellan Cloud Security (1).pptxAWS Community DAY Albertini-Ellan Cloud Security (1).pptx
AWS Community DAY Albertini-Ellan Cloud Security (1).pptx
 
Call Girls Dubai Prolapsed O525547819 Call Girls In Dubai Princes$
Call Girls Dubai Prolapsed O525547819 Call Girls In Dubai Princes$Call Girls Dubai Prolapsed O525547819 Call Girls In Dubai Princes$
Call Girls Dubai Prolapsed O525547819 Call Girls In Dubai Princes$
 
Hot Service (+9316020077 ) Goa Call Girls Real Photos and Genuine Service
Hot Service (+9316020077 ) Goa  Call Girls Real Photos and Genuine ServiceHot Service (+9316020077 ) Goa  Call Girls Real Photos and Genuine Service
Hot Service (+9316020077 ) Goa Call Girls Real Photos and Genuine Service
 
Chennai Call Girls Alwarpet Phone 🍆 8250192130 👅 celebrity escorts service
Chennai Call Girls Alwarpet Phone 🍆 8250192130 👅 celebrity escorts serviceChennai Call Girls Alwarpet Phone 🍆 8250192130 👅 celebrity escorts service
Chennai Call Girls Alwarpet Phone 🍆 8250192130 👅 celebrity escorts service
 
Dwarka Sector 26 Call Girls | Delhi | 9999965857 🫦 Vanshika Verma More Our Se...
Dwarka Sector 26 Call Girls | Delhi | 9999965857 🫦 Vanshika Verma More Our Se...Dwarka Sector 26 Call Girls | Delhi | 9999965857 🫦 Vanshika Verma More Our Se...
Dwarka Sector 26 Call Girls | Delhi | 9999965857 🫦 Vanshika Verma More Our Se...
 
Best VIP Call Girls Noida Sector 75 Call Me: 8448380779
Best VIP Call Girls Noida Sector 75 Call Me: 8448380779Best VIP Call Girls Noida Sector 75 Call Me: 8448380779
Best VIP Call Girls Noida Sector 75 Call Me: 8448380779
 
VIP Kolkata Call Girl Dum Dum 👉 8250192130 Available With Room
VIP Kolkata Call Girl Dum Dum 👉 8250192130  Available With RoomVIP Kolkata Call Girl Dum Dum 👉 8250192130  Available With Room
VIP Kolkata Call Girl Dum Dum 👉 8250192130 Available With Room
 
FULL ENJOY Call Girls In Mayur Vihar Delhi Contact Us 8377087607
FULL ENJOY Call Girls In Mayur Vihar Delhi Contact Us 8377087607FULL ENJOY Call Girls In Mayur Vihar Delhi Contact Us 8377087607
FULL ENJOY Call Girls In Mayur Vihar Delhi Contact Us 8377087607
 

GraphQL with .NET Core