Product-apim: Prise en charge de graphql

CrĂ©Ă© le 8 avr. 2018  Â·  25Commentaires  Â·  Source: wso2/product-apim

Bonjour Ă  tous,

J'aimerais savoir si un support solide pour les API GraphQL est prévu pour l'avenir de WSO2 ? GraphQL est de plus en plus adopté par les développeurs d'API avec de solides arguments contre REST.
Il existe aujourd'hui de nombreux outils formidables pour GraphQL, mais Ă  mon humble avis, le gros goulot d'Ă©tranglement pour une adoption massive est le trĂšs faible support des passerelles API aujourd'hui.

Bien sĂ»r, cela fonctionne toujours. Un point de terminaison GraphQL est compatible REST, il vous suffit de crĂ©er un point de terminaison REST sur WSO2 APIM. Mais aujourd'hui, c'est loin d'ĂȘtre optimal et de par sa conception, vous ne pouvez pas utiliser correctement la plupart des fonctionnalitĂ©s APIM de WSO2.

La raison en est que vous avez gĂ©nĂ©ralement l'ensemble du schĂ©ma de votre cluster d'API dans un seul point de terminaison. MĂȘme si vous avez des dizaines de microservices servant leurs propres API GraphQL, la bonne pratique consiste Ă  les agrĂ©ger via un routeur d'API comme les outils Apollo https://www.apollographql.com/docs/graphql-tools/schema-stitching.html.

Pour cette raison, nous ne pouvons pas utiliser correctement les fonctionnalitĂ©s de limitation et de monĂ©tisation dans WSO2, qui sont configurĂ©es par point de terminaison, mais dans GraphQL, nous voulons pouvoir les configurer par les fonctions GraphQL. La configuration d'un point de terminaison GraphQL annule aujourd'hui l'essentiel de l'utilitĂ© d'une passerelle API, sauf peut-ĂȘtre pour les besoins anti-DDOS.

J'aimerais pouvoir crĂ©er mes microservices GraphQL, les agrĂ©ger avec un serveur Apollo et sĂ©curiser, monĂ©tiser et surveiller correctement avec la passerelle WSO2. Je comprends que c'est beaucoup de travail, mais aujourd'hui, la prise en charge des API GraphQL parmi les passerelles API est si faible que j'espĂšre que cela peut ĂȘtre un avantage concurrentiel fort pour WSO2 et une grande opportunitĂ©. MĂȘme pour l'analytique, aujourd'hui il n'y a pas d'analytique open-source pour GraphQL, la seule analytique Ă  laquelle je pense est apollo Optics et c'est une source fermĂ©e.

Merci d'avoir écouté mon point, j'ai hùte d'en savoir plus sur votre feuille de route si c'est quelque chose de prévu.

Meilleures salutations,

3.0.0

Commentaire le plus utile

Analyse des besoins

  • GraphQL est dĂ©veloppĂ© par Facebook qui est une alternative Ă  REST. Il s'agit d'un langage de requĂȘte pour les API oĂč un utilisateur particulier peut spĂ©cifier exactement quelles donnĂ©es sont nĂ©cessaires Ă  partir d'une API.
  • Nous savons que nous pouvons utiliser une dĂ©finition Swagger (Open API Specification) pour concevoir une API REST. Mais dans GraphQL, nous pouvons utiliser Schema Definition Language (SDL) pour Ă©crire le schĂ©ma d'une API GraphQL.
  • Invoquer une API GraphQL signifie simplement rĂ©cupĂ©rer des donnĂ©es Ă  l'aide de requĂȘtes GraphQL et Ă©crire des donnĂ©es Ă  l'aide de mutations GraphQL.
  • Ici, notre exigence est de fournir le support de WSO2 APIM afin de crĂ©er et de publier une API GraphQL et de l'invoquer via https/http.

Approche suggérée

  • Lors de la publication d'une API GraphQL, nous demandons Ă  l'utilisateur (Ă©diteur) de tĂ©lĂ©charger le fichier de schĂ©ma qui constitue la dĂ©finition. Ensuite, l'utilisateur peut remplir les dĂ©tails de l'API tels que le nom, la version, le contexte, etc. Mais l'utilisateur ne sera pas invitĂ© Ă  crĂ©er les ressources pour les mĂ©thodes GET, POST lors de la crĂ©ation de l'API.
    1 design page

  • Ensuite, dans l'onglet Mettre en Ɠuvre, si l'utilisateur sĂ©lectionne,

    • GĂ©rer l'API

      • Le type de point de terminaison doit ĂȘtre dĂ©fini sur HTTP/REST Endpoint automatiquement. (L'utilisateur ne doit pas avoir la capacitĂ© de changer cela)
      • L'utilisateur doit avoir la possibilitĂ© de modifier le point de terminaison (production et bac Ă  sable) comme d'habitude.
      • Les autres champs doivent rester les mĂȘmes.
        2 implement page
    • API prototype

      • Dans la mĂ©thode d'implĂ©mentation Inline , deux mĂ©thodes GET et POST doivent ĂȘtre automatiquement crĂ©Ă©es et affichĂ©es comme indiquĂ© dans la capture d'Ă©cran suivante.
        3 implement prototype
  • Si vous choisissez l'option GĂ©rer l'API , vous devez dĂ©finir les paramĂštres dans l'onglet GĂ©rer .

    • Ici, la mĂȘme procĂ©dure doit ĂȘtre suivie.
    • SpĂ©cialement comme dans la mĂ©thode prototype Inline , deux mĂ©thodes GET et POST doivent ĂȘtre automatiquement crĂ©Ă©es et affichĂ©es comme dans la capture d'Ă©cran suivante.
      4 manage tab
  • Une fois l'API publiĂ©e ou prototypĂ©e

    • L'API doit ĂȘtre Ă©tiquetĂ©e comme une API GraphQL dans API Store.
    • Un consommateur doit avoir la possibilitĂ© de tĂ©lĂ©charger le fichier de schĂ©ma de cette API via API Store.

Tous les 25 commentaires

+1

+1

+1

+1

+1

+1

:+1:

Bonjour @YannickB ,

Merci d'avoir soulevé cette question. Nous aimerions ajouter cela à notre feuille de route.

Je n'ai pas beaucoup utilisĂ© GraphQL et j'ai donc du mal Ă  comprendre la portĂ©e exacte de l'exigence. Pour plus de clartĂ©, pourriez-vous expliquer les limitations exactes de la fonctionnalitĂ© actuelle en utilisant peut-ĂȘtre un exemple ? Fondamentalement, ce qui est exposĂ© via le serveur Apollo et comment devriez-vous l'exposer via la passerelle API aujourd'hui par rapport Ă  ce qui aurait Ă©tĂ© le moyen idĂ©al de l'exposer via la passerelle API.

Merci,
Nuwan.

+1

Salut @nuwand ,

Tout d'abord en tant que clause de non-responsabilitĂ©, mĂȘme si j'ai ouvert le ticket, je ne suis pas sĂ»r d'ĂȘtre la meilleure personne pour dĂ©crire le fonctionnement de la fonctionnalitĂ©. ConsidĂ©rez-moi comme quelqu'un qui Ă©tudie pour construire une trĂšs bonne architecture logicielle, y compris des Ă©lĂ©ments comme GraphQL et API Gateway, et pendant que j'Ă©tudiais cela, il m'est devenu Ă©vident qu'aucune passerelle API sur le marchĂ© aujourd'hui n'a Ă©tĂ© conçue pour prendre pleinement en charge GraphQL. Par consĂ©quent, je n'ai pas encore de cas d'utilisation rĂ©el en production, mais je ferai de mon mieux pour vous aider.

Je suis d'accord que la meilleure façon d'expliquer sera un exemple, alors le voici:

Supposons que vous disposiez d'une API fournissant des fonctions CRUD pour deux objets, produit et facture.

Avec une API Rest, vous auriez deux points de terminaison à utiliser, http://myapi.com/api/product et http://myapi.com/api/invoice , puis vous effectuez des opérations GET/POST/PUT/DELETE sur eux.
Dans WSO2, vous pouvez configurer chaque point de terminaison indépendamment, un pour le produit et un pour la facture, puis donner une configuration spécifique à chacun d'eux pour gérer indépendamment les fonctionnalités de sécurité/limitation/monétisation/etc... fournies par WSO2.

Mais si nous fournissons une API GraphQL, nous sommes actuellement beaucoup plus limitĂ©s. Cela est dĂ» au fait que les deux objets seront accessibles dans le mĂȘme endpoint http://myapi.com/graphql. Et il n'y a aucun moyen de crĂ©er plusieurs points de terminaison http://myapi.com/graphql/product et http://myapi.com/graphql/invoice , ceci est complĂštement anti-modĂšle avec les meilleures pratiques de GraphQL et fera le plus outils de son Ă©cosystĂšme pour arrĂȘter de travailler. De plus, je crois que toutes les opĂ©rations HTTP sont POST.

Ainsi, Ă  titre d'exemple, nous pouvons souhaiter effectuer ces requĂȘtes sur le point de terminaison GraphQL :

query {
  product(id: 1) {
    id
    name
  }
}
mutation {
  createInvoice(data: {
    'customerID': 1
    'productID': 1
    'price': 20
  }) {
    id
    number
    total
  }
}

La premiĂšre requĂȘte interrogera les informations du produit spĂ©cifiĂ©, et la seconde crĂ©era une facture pour ce produit. Les deux requĂȘtes sont exĂ©cutĂ©es sur le point de terminaison http://myapi.com/graphql .

Donc avec l'état actuel de WSO2 Gateway, qui si je ne me trompe pas ne permet de configurer que par point de terminaison, si je veux par exemple monétiser à 0.01cent chaque appel à createInvoice en configurant le point de terminaison http://myapi.com/graphql , alors l'appel au produit sera également monétisé à 0,01 centime. Avec REST, il vous suffirait de configurer le 0.01cent sur http://myapi.com/api/invoice sur POST et ce serait tout.
J'espĂšre que cela vous suffira pour comprendre mon propos, c'est un exemple simple mais on peut en trouver plein d'autres, Ă  l'Ă©tat actuel il est impossible d'utiliser les fonctionnalitĂ©s de Gateway avec GraphQL en raison d'un manque de flexibilitĂ© dans la configuration. Et ce n'est pas votre faute, je pense que toutes les autres passerelles API du marchĂ© ont le mĂȘme problĂšme.

Ainsi, la solution Ă  mon humble avis permet d'attacher la configuration WSO2 non seulement au point de terminaison, mais Ă©galement aux fonctions GraphQL. Cela peut s'avĂ©rer ĂȘtre un dĂ©fi technique, je pense, mais il y a certainement un besoin pour cela sur le marchĂ© car actuellement GraphQL ne fonctionne tout simplement pas avec les passerelles API, ou de maniĂšre trĂšs dĂ©gradĂ©e.

Il semble que cette suggestion ait attirĂ© pas mal d'attention. Aux personnes suivant ce problĂšme, je vous invite Ă  donner quelques informations sur votre cas d'utilisation et sur la façon dont WSO2 devrait concevoir cette fonctionnalitĂ©. J'espĂšre que j'ai fait de mon mieux pour dĂ©crire la situation, mais je pense qu'ils auront besoin d'un exemple rĂ©el pour mettre cela en Ɠuvre correctement.

Meilleures salutations,
Yannick

En tant que solution temporaire, il serait formidable d'avoir au moins la possibilité d'importer dans les points de terminaison graphql WSO2-AM, afin de l'utiliser comme répertoire de services en attendant une prise en charge complÚte dans la passerelle API

Bonjour @YannickB ,

Merci pour votre explication. Pardonnez-moi, mais j'essaie toujours de comprendre les limites des points de terminaison. Permettez-moi d'expliquer la capacitĂ© d'API Manager en ce qui concerne les points de terminaison, puis vous pourrez peut-ĂȘtre identifier la limitation.

Supposons que vous ayez deux points de terminaison comme http://myapi.com/api/invoice et http://myapi.com/api/product. Notez que j'utilise le mĂȘme exemple que vous, sur lequel les deux points de terminaison semblent ĂȘtre sur le mĂȘme hĂŽte (myapi.com). Si votre exigence est d'avoir une seule API sur API Manager pour proxy les deux points de terminaison, ce que vous devez faire est de crĂ©er deux ressources, l'une en tant que POST /invoice et l'autre en tant que POST /product et spĂ©cifiez http://myapi.com/ api/ comme point de terminaison de l'API respective. Cela vous permettra d'accĂ©der aux deux points de terminaison ci-dessus Ă  l'aide d'une seule API. Par exemple, si votre hĂŽte de passerelle est gateway.myapi.com et que le contexte de l'API que vous crĂ©ez est /graphql et que sa version est 1.0.0, les requĂȘtes suivantes seront transmises chacune par proxy au point de terminaison appropriĂ©, comme ci-dessous.

POST http://gateway.myqpi.com/graphql/1.0.0/invoice -> POST http://myqpi.com/api/invoice
POST http://gateway.myqpi.com/graphql/1.0.0/product -> POST http://myqpi.com/api/product

Notez que vous n'avez qu'à créer 1 API (/graphql/1.0.0) pour proxy les deux points de terminaison. Je suis désolé si je répÚte quelque chose que vous savez déjà :), mais si vous pouviez identifier la limitation de notre ressource à la cartographie qui rend impossible l'utilisation de GraphQL, cela m'aiderait à mieux comprendre le problÚme.

Merci,
Nuwan.

nuwand, je suis moins technique que vous. Mais dans ma comprĂ©hension avec un serveur APIM/Identity nous dĂ©finissons au niveau API la gestion d'une API (sĂ©curitĂ©, throttling, ... ..). GraphQL est une sorte de "super" langage combinant des API via un "mĂ©ta" langage. Ce qui m'intĂ©resserait, c'est de comprendre comment les concepts de GraphQL et les concepts d'un APIM WS02 sont appariĂ©s. et si les deux concepts seront intĂ©grĂ©s. Bien sĂ»r, vous pouvez considĂ©rer la ressource GraphQL als 1 qui elle-mĂȘme gĂšre tout .... mais la valeur de WS02 est limitĂ©e si tous mes services "hĂ©ritĂ©s" seront accessibles via le serveur graphql.

+1

Avec GraphQL, il n'y a vraiment qu'un seul point de terminaison, donc il n'y a rien de tel que myapi.com/graphql/invoice et graphql/product, l'endoint est juste "myapi.com/graphql", et rien aprĂšs cela. Il s'agit littĂ©ralement de la mĂȘme URL pour chaque requĂȘte et mutation, avec les opĂ©rations dĂ©finies dans le corps de la requĂȘte.

Certaines fonctionnalitĂ©s de gestion d'api nĂ©cessiteraient alors une introspection du corps de la requĂȘte, une connaissance du schĂ©ma graphql, etc. Supposons que cela ne soit _pas_ faisable Ă  court terme : WSO2 devrait presque devenir un serveur/passerelle GraphQL en soi (ou en intĂ©grer un).

Au lieu de cela, nous devrions nous concentrer sur les fonctionnalitĂ©s de gestion des API _sont_ possibles. Je suppose que nous avons besoin d'une coopĂ©ration entre WSO2 et le serveur/passerelle GraphQL rĂ©el, par exemple en dĂ©finissant des en-tĂȘtes. Par exemple la monĂ©tisation : le serveur GraphQL peut calculer la complexitĂ© de la requĂȘte, ajouter cette information sous forme d'en-tĂȘte HTTP Ă  la rĂ©ponse, oĂč WSO2 traduit cette valeur en prix. De mĂȘme pour la surveillance, le serveur GraphQL peut "convertir" la requĂȘte en forme de JSON en (une liste de) pseudo-points de terminaison de type repos, que WSO2 lit Ă  partir de l'en-tĂȘte de rĂ©ponse pour mettre Ă  jour les informations de surveillance. La mĂȘme chose peut ĂȘtre faite pour la sĂ©curitĂ©, peut-ĂȘtre en 2 phases : 1er demander au serveur GraphQL de convertir la requĂȘte en points de terminaison de type repos, WSO2 dĂ©cide de passer ou non, en transmettant la requĂȘte au point de terminaison rĂ©el.

Je suis complĂštement nouveau sur WSO2 et je n'ai pas lu la plupart de la documentation, donc peut-ĂȘtre que ces fonctionnalitĂ©s sont dĂ©jĂ  dans WSO2 (plus prĂ©cisĂ©ment : pour toute fonctionnalitĂ© de WSO2 qui est gĂ©nĂ©ralement dĂ©rivĂ©e de l'URI de point de terminaison REST exact, si cette mĂȘme fonctionnalitĂ© peut ĂȘtre dĂ©rivĂ©e d'une autre maniĂšre (par exemple, une valeur d'en-tĂȘte ou une autre API vers WSO2 lui-mĂȘme)). Il est probable qu'un serveur GraphQL doive ĂȘtre modifiĂ© pour prendre en charge ces fonctionnalitĂ©s spĂ©cifiques Ă  WSO2. La question est : par quel fruit Ă  portĂ©e de main pouvons-nous commencer ?

(Bien sûr, j'aimerais voir WSO2 s'engager fortement dans GraphQL... mais nous devons commencer quelque part, n'est-ce pas ?)

Excellent retour, je ressens la mĂȘme chose ;)

Op di 6 nov. 2018 Ă  12:06 schreef quatriĂšme44 [email protected] :

Avec GraphQL, il n'y a vraiment qu'un seul point de terminaison, donc il n'y a pas de tel
chose comme myapi.com/graphql/invoice et graphql/product, l'endoint est
juste "myapi.com/graphql", et rien aprÚs ça. C'est littéralement le
mĂȘme URL pour chaque requĂȘte et mutation, avec les opĂ©rations dĂ©finies Ă  l'intĂ©rieur
le corps de la requĂȘte.

Certaines fonctionnalités de gestion des API nécessiteraient alors une introspection de la
corps de la requĂȘte, connaissance du schĂ©ma graphql, etc. Supposons que cela
n'est pas faisable Ă  court terme : WSO2 devrait presque devenir un GraphQL
serveur/passerelle en lui-mĂȘme (ou en intĂ©grer un).

Au lieu de cela, nous devrions nous concentrer sur les fonctionnalités de gestion des API qui sont possibles.
Je suppose que nous avons besoin d'une coopération entre WSO2 et le GraphQL réel
serveur/passerelle, par exemple en dĂ©finissant des en-tĂȘtes. Par exemple la monĂ©tisation : le
Le serveur GraphQL peut calculer la complexitĂ© de la requĂȘte, ajoutez ceci
informations sous forme d'en-tĂȘte HTTP Ă  la rĂ©ponse, oĂč WSO2 traduit cela
valeur en un prix. De mĂȘme pour le monitoring, le serveur GraphQL peut
'convertir' la requĂȘte en forme de JSON en (une liste de) repos
pseudo-endpoint(s), que WSO2 lit Ă  partir de l'en-tĂȘte de rĂ©ponse pour mettre Ă  jour le
informations de surveillance. La mĂȘme chose peut ĂȘtre faite pour la sĂ©curitĂ©, peut-ĂȘtre en 2
phases : 1Ăšre demande au serveur GraphQL de convertir la requĂȘte en rest-like
terminaux, WSO2 dĂ©cide de passer ou non, en transmettant la requĂȘte au vĂ©ritable
point final.

Je suis complĂštement nouveau sur WSO2 et je n'ai pas lu la plupart de la documentation, donc
peut-ĂȘtre que ces fonctionnalitĂ©s sont dĂ©jĂ  dans WSO2 (plus prĂ©cisĂ©ment : pour tout
fonctionnalité de WSO2 qui est généralement dérivée du point de terminaison REST exact
URI, si cette mĂȘme fonctionnalitĂ© peut ĂȘtre dĂ©rivĂ©e d'une autre maniĂšre
(par exemple, une valeur d'en-tĂȘte ou une autre API vers WSO2 lui-mĂȘme)). Il est probable que
un serveur GraphQL doit ĂȘtre modifiĂ© pour prendre en charge ces spĂ©cificitĂ©s WSO2
caractéristiques. La question est : par quel fruit à portée de main pouvons-nous commencer ?

(Bien sûr, j'aimerais voir WSO2 s'engager fortement dans GraphQL...
mais nous devons commencer quelque chose, n'est-ce pas ?)

—
Vous recevez ceci parce que vous avez commenté.
RĂ©pondez directement Ă  cet e-mail, consultez-le sur GitHub
https://github.com/wso2/product-apim/issues/3184#issuecomment-436215537 ,
ou couper le fil
https://github.com/notifications/unsubscribe-auth/Ad4tuNmWvNcpkc1Nk5y46DljcQeM9RPwks5usW0kgaJpZM4TLf2Q
.

--
Bart Van Vlierberghe

Bonjour,
Voici un extrait de la documentation d'Apollo Server :
_"Si vous utilisez une API REST qui a une autorisation intĂ©grĂ©e, comme avec un en-tĂȘte HTTP, vous avez une autre option. PlutĂŽt que de faire un travail d'authentification ou d'autorisation dans la couche GraphQL (dans les rĂ©solveurs/modĂšles), c'est possible pour simplement transmettre les en-tĂȘtes ou les cookies Ă  votre point de terminaison REST et le laisser faire le travail."_
Si la clĂ© API est la mĂȘme pour tous les points de terminaison impliquĂ©s par vos requĂȘtes graphql, il semble que cela pourrait faire l'affaire.
Des idées sur cette "solution de contournement" (mettre le serveur Apollo devant l'API-M) ?

Analyse des besoins

  • GraphQL est dĂ©veloppĂ© par Facebook qui est une alternative Ă  REST. Il s'agit d'un langage de requĂȘte pour les API oĂč un utilisateur particulier peut spĂ©cifier exactement quelles donnĂ©es sont nĂ©cessaires Ă  partir d'une API.
  • Nous savons que nous pouvons utiliser une dĂ©finition Swagger (Open API Specification) pour concevoir une API REST. Mais dans GraphQL, nous pouvons utiliser Schema Definition Language (SDL) pour Ă©crire le schĂ©ma d'une API GraphQL.
  • Invoquer une API GraphQL signifie simplement rĂ©cupĂ©rer des donnĂ©es Ă  l'aide de requĂȘtes GraphQL et Ă©crire des donnĂ©es Ă  l'aide de mutations GraphQL.
  • Ici, notre exigence est de fournir le support de WSO2 APIM afin de crĂ©er et de publier une API GraphQL et de l'invoquer via https/http.

Approche suggérée

  • Lors de la publication d'une API GraphQL, nous demandons Ă  l'utilisateur (Ă©diteur) de tĂ©lĂ©charger le fichier de schĂ©ma qui constitue la dĂ©finition. Ensuite, l'utilisateur peut remplir les dĂ©tails de l'API tels que le nom, la version, le contexte, etc. Mais l'utilisateur ne sera pas invitĂ© Ă  crĂ©er les ressources pour les mĂ©thodes GET, POST lors de la crĂ©ation de l'API.
    1 design page

  • Ensuite, dans l'onglet Mettre en Ɠuvre, si l'utilisateur sĂ©lectionne,

    • GĂ©rer l'API

      • Le type de point de terminaison doit ĂȘtre dĂ©fini sur HTTP/REST Endpoint automatiquement. (L'utilisateur ne doit pas avoir la capacitĂ© de changer cela)
      • L'utilisateur doit avoir la possibilitĂ© de modifier le point de terminaison (production et bac Ă  sable) comme d'habitude.
      • Les autres champs doivent rester les mĂȘmes.
        2 implement page
    • API prototype

      • Dans la mĂ©thode d'implĂ©mentation Inline , deux mĂ©thodes GET et POST doivent ĂȘtre automatiquement crĂ©Ă©es et affichĂ©es comme indiquĂ© dans la capture d'Ă©cran suivante.
        3 implement prototype
  • Si vous choisissez l'option GĂ©rer l'API , vous devez dĂ©finir les paramĂštres dans l'onglet GĂ©rer .

    • Ici, la mĂȘme procĂ©dure doit ĂȘtre suivie.
    • SpĂ©cialement comme dans la mĂ©thode prototype Inline , deux mĂ©thodes GET et POST doivent ĂȘtre automatiquement crĂ©Ă©es et affichĂ©es comme dans la capture d'Ă©cran suivante.
      4 manage tab
  • Une fois l'API publiĂ©e ou prototypĂ©e

    • L'API doit ĂȘtre Ă©tiquetĂ©e comme une API GraphQL dans API Store.
    • Un consommateur doit avoir la possibilitĂ© de tĂ©lĂ©charger le fichier de schĂ©ma de cette API via API Store.

A l'air bien

@wasuradananjith pouvez-vous également publier à quoi ressemble une API GraphQL dans le magasin ? L'interrogation est-elle disponible dans le portail API, probablement avec le schéma ?

Au moins, Apollo prend en charge l'utilisation de GET pour la demande de données GraphQL.

Salut tout le monde,

Veuillez trouver les informations et les relations publiques du support Graphql relatives à la version WSO2 APIM 3.0.0. Puisque nous allons publier WSO2 APIM 3.0.0 sous une nouvelle interface utilisateur basée sur React, des captures d'écran de la nouvelle interface utilisateur ont été ajoutées ci-dessous.

Éditeur d'API
La description:
Lorsque le crĂ©ateur de l'API tĂ©lĂ©charge le schĂ©ma graphQL dans l'Ă©diteur de l'API, les opĂ©rations de requĂȘte et de mutation seront rĂ©pertoriĂ©es dans le portail de l'Ă©diteur. Ensuite, il / elle permettra de dĂ©finir les portĂ©es, les politiques de limitation, d'activer / dĂ©sactiver la sĂ©curitĂ© contre les opĂ©rations.

Fonctionnalités chez l'éditeur.

  1. Créer une API GraphQL en important le schéma SDL GraphQL
  2. Valider le schéma et extraire ses opérations de la définition de schéma
  3. Récupérer/Importer/Télécharger le schéma SDL chez l'éditeur.
  4. Affiche les opérations au lieu des ressources
  5. Ajouter/Mettre à jour la limitation, les étendues, la sécurité contre les opérations
  6. Voir les API graphQL étiquetées 'GRAPHQL' sur la page de liste des API

Magasin d'API
Une fois l'API publiĂ©e par un utilisateur Ă©diteur, toutes les opĂ©rations du schĂ©ma SDL ont Ă©tĂ© renseignĂ©es sur le portail des dĂ©veloppeurs et le fichier de schĂ©ma est Ă©galement disponible au tĂ©lĂ©chargement. Le dĂ©veloppeur peut tester les opĂ©rations Ă  l'aide de la console Tryout avec les types de requĂȘte GET et POST.

Fonctionnalités en magasin.

  1. Voir les API graphQL étiquetées 'GRAPHQL' sur la page de liste des API
  2. Afficher les opérations pour une API particuliÚre
  3. Capable de télécharger le schéma SDL en récupérant le schéma
  4. Fournir la console développeur avec GET et POST pour invoquer l'API

Captures d'Ă©cran des vues

  1. Créer une page d'API GrpahQL
    homepage
  1. Télécharger la page de schéma
    Screen Shot 2019-08-29 at 10 36 40 AM

  2. Cliquez sur suivant et remplissez un formulaire pour remplir les détails
    Screen Shot 2019-08-30 at 10 36 12 AM

  3. Création de la page de présentation de l'API GraphQL
    GraphQL API page

  4. Vue des opérations de l'API GraphQL
    Operations

  5. Définition de schéma téléchargée
    schema definition

  6. Ajouter/Mettre à jour les étendues, la limitation, la sécurité
    operation page

  7. Aperçu du fonctionnement du magasin
    Store operations

  8. Téléchargement du schéma
    Screen Shot 2019-08-29 at 11 28 03 AM

  9. Console développeur
    developer console

Temps d'invocation de l'API Graphql

  1. Autorisation : le créateur d'API peut ajouter des champs d'application par opération chez l'éditeur
    Lorsque l'utilisateur APP invoque l'API graphQL avec une opĂ©ration de requĂȘte/mutation (lecture seule/lecture-Ă©criture), la passerelle API identifiera les opĂ©rations contenues dans la charge utile et les fera correspondre en fonction de la portĂ©e du jeton de l'utilisateur. Si la charge utile contient plusieurs opĂ©rations avec plusieurs portĂ©es, le jeton doit avoir au moins une union des portĂ©es d'opĂ©ration.
    Par exemple : - Disons qu'une requĂȘte contient, (opĂ©ration A - portĂ©e 1, opĂ©ration B - portĂ©e 2)
    le jeton de l'utilisateur qui va exĂ©cuter la requĂȘte doit avoir les deux portĂ©es (scope1 et scope2)

  2. Sécurité - API Creator peut activer/désactiver la sécurité par opération chez l'éditeur.
    Lorsqu'une demande de requĂȘte est accompagnĂ©e de plusieurs noms d'opĂ©rations, la sĂ©curitĂ© a Ă©tĂ© considĂ©rĂ©e comme l'union de la sĂ©curitĂ© des opĂ©rations. Si une opĂ©ration a Ă©tĂ© activĂ©e pour la sĂ©curitĂ©, nous prenons en charge la sĂ©curitĂ© pour l'ensemble de la demande.

  3. Limitation - API Creator peut ajouter une politique de limitation par opération chez l'éditeur.
    Lorsqu'une demande de requĂȘte est fournie avec plusieurs noms d'opĂ©ration, les stratĂ©gies de rĂ©gulation s'appliquent par opĂ©ration. Si un nom d'opĂ©ration de la demande a Ă©tĂ© limitĂ© conformĂ©ment Ă  sa stratĂ©gie, l'ensemble de la demande sera limitĂ© dans le cas d'une opĂ©ration limitĂ©e.

PR sera trouvé à https://github.com/wso2/carbon-apimgt/pull/6784.

  • À ce niveau, nous n'allons pas prendre en charge l'inspection et l'analyse des requĂȘtes, prendre en charge l'API MicroGateway pour les points de terminaison GraphQL, prendre en charge les abonnements Graphql avec les points de terminaison entrants (API de socket Web), inclure un widget supplĂ©mentaire pour les API Graphql pour voir le nombre d'invocations d'opĂ©rations en fonction des types d'opĂ©rations, etc. De ce fait, de nouvelles issues ont Ă©tĂ© ouvertes pour ajouter un support pertinent Ă  notre future feuille de route.
  1. https://github.com/wso2/product-apim/issues/5432
  2. https://github.com/wso2/product-apim/issues/5431
  3. https://github.com/wso2/product-microgateway/issues/773
  4. https://github.com/wso2/analytics-solutions/issues/310

Appréciez vos réflexions et vos précieuses contributions à ce sujet.

Merci!

Salut tout le monde,

Veuillez trouver les informations et les relations publiques du support Graphql relatives à la version WSO2 APIM 3.0.0. Puisque nous allons publier WSO2 APIM 3.0.0 sous une nouvelle interface utilisateur basée sur React, des captures d'écran de la nouvelle interface utilisateur ont été ajoutées ci-dessous.

Éditeur d'API
La description:
Lorsque le crĂ©ateur de l'API tĂ©lĂ©charge le schĂ©ma graphQL dans l'Ă©diteur de l'API, les opĂ©rations de requĂȘte et de mutation seront rĂ©pertoriĂ©es dans le portail de l'Ă©diteur. Ensuite, il / elle permettra de dĂ©finir les portĂ©es, les politiques de limitation, d'activer / dĂ©sactiver la sĂ©curitĂ© contre les opĂ©rations.

Fonctionnalités chez l'éditeur.

1. Create a GraphQL APIs by importing GraphQL SDL schema

2. Validate the schema and extract its operations from the schema definition

3. Retrieve/Import/Download  SDL schema at the publisher.

4. Shows operations instead of resources

5. Add/Update throttling,scopes,security against operations

6. View graphQL APIs labeling 'GRAPHQL' at API Listing Page

Magasin d'API
Une fois l'API publiĂ©e par un utilisateur Ă©diteur, toutes les opĂ©rations du schĂ©ma SDL ont Ă©tĂ© renseignĂ©es sur le portail des dĂ©veloppeurs et le fichier de schĂ©ma est Ă©galement disponible au tĂ©lĂ©chargement. Le dĂ©veloppeur peut tester les opĂ©rations Ă  l'aide de la console Tryout avec les types de requĂȘte GET et POST.

Fonctionnalités en magasin.

1. View graphQL APIs labeling 'GRAPHQL' at API Listing Page

2. View operations for particular API

3. Able to download SDL schema retrieving schema

4. Provide developer console with GET and POST to invoke the API

Captures d'Ă©cran des vues

1. Create GrpahQL API page

homepage

1. Upload schema page

Screen Shot 2019-08-29 at 10 36 40 AM

1. Click next and populate a form to fill details

Screen Shot 2019-08-30 at 10 36 12 AM

1. Created GraphQL API overview page

GraphQL API page

1. GraphQL API operation view

Operations

1. Uploaded schema definition

schema definition

1. Add/Update scopes,throttling,security

operation page

1. Store operation overview

Store operations

1. Schema download

Screen Shot 2019-08-29 at 11 28 03 AM

1. Developer Console

developer console

Temps d'invocation de l'API Graphql

1. Authorization - API Creator can add scopes per operations at the publisher
   When the APP user invokes the graphQL API with query/mutation (read-only/ read-write) operation, API gateway will identify which operations are containing in the payload and match them according to the token scope of the user. If the payload contains multiple operations with multiple scopes, the token should have at least a union of the operation scopes.
   Eg:- Let's say when a query contains, (operation A  - scope 1, operation B -  scope 2)
   the token of the user who is going to execute the query should have both scopes (scope1 and scope2)

2. Security - API Creator can enable/disable security per operations at the publisher.
   When a query request comes with multiple operation names, security has been considered as the union of the operations security. If one operation has been enabled the security, we support security for whole request.

3. Throttling - API Creator can add throttling policy per operations at the publisher.
   When a query request comes with multiple operation names, throttle policies will apply per operation. If one operation name of the request has been throttled out according to its policy, the whole request is going to be throttled out in the case of throttled operation.

PR se trouve Ă  wso2/carbon-apimgt#6784 .

* At this level, we are not going to support on inspecting and analyzing queries, support API MicroGateway for GraphQL endpoints, support Graphql subscriptions with the inbound endpoints(Web socket APIs), Include an extra widget for Graphql APIs to see the count of operation invocation based on operation types, etc. Therefore, new issues have been opened to add relevant support for our future roadmap.


1. #5432

2. #5431

3. [wso2/product-microgateway#773](https://github.com/wso2/product-microgateway/issues/773)

4. [wso2/analytics-solutions#310](https://github.com/wso2/analytics-solutions/issues/310)

Appréciez vos réflexions et vos précieuses contributions à ce sujet.

Merci!

Salut @HiranyaKavishani ,
Cette prise en charge introduit-elle la publication des API GraphQL existantes via APIM comme nous le faisons normalement pour les API existantes via wso apim ?

Existe-t-il Ă©galement une version bĂȘta/alpha pour tester la fonctionnalité ?

Merci !

Salut @arvindkannan ,

Pour les API Graphql existantes, il est nécessaire de recréer les API et de les republier car graphql a un support différent par rapport aux autres API. Mais si c'est le cas, il devrait s'assurer que les jetons existants et les URL existantes ne changeront pas avec cela car cela sera affecté aux clients existants.

La fonctionnalité sera disponible avec APIM 3.0.0 qui sortira en octobre.

Merci!

Fermez le problĂšme car cette prise en charge est disponible dans la version bĂȘta d'APIM 3.0.0

Cette page vous a été utile?
0 / 5 - 0 notes