7
votes

Comment consommer une API ASP.NET CORE WEB dans une application C # UWP?

J'essaie de comprendre comment il est possible de consommer un webapi ASP.NET CORE au sein d'une application UWP / UAP. Je pensais que je serais possible de consommer le webapi semblable à la consommation d'un service de WCF, mais je n'ai rien trouvé à ce sujet à ce sujet.

En outre, j'ai essayé d'installer microsoft.aspnet.webapi.core mais n'avait aucun succès car il n'est pas compatible avec UAP (version = V10.0).

Je suis un peu perdu maintenant. Peut-être que quelqu'un pourrait me donner un indice comment je pourrais utiliser le webapi dans l'application UWP.


1 commentaires

ASP.NET CORE WEBAPI n'est pas comme WCF. Selon ce qu'il ne fournit aucun moyen standard de le consommer comme WCF, il n'existe aucun client généré automatiquement pour la consommation de points d'extrémité WebAPI. ASP.NET utilise HTTP comme protocole, vous pouvez donc utiliser WebClient ou quelque chose de similaire pour envoyer des demandes HTTP et les réponses d'analyse de JSON ou XML aux objets et faites-vous une logique d'entreprise.


3 Réponses :


7
votes

C'est la même chose que de consommer n'importe quel appel d'API. Utilisez simplement la classe httpclient pour appeler le point final et gérer la réponse, il n'y a aucune différence dans le comportement attendu.

Imaginez que vous avez une API ASP.NET CORE WEB Nocard final défini comme ceci: xxx

supposant que cela a été hébergé sur `localhost: 5000 'Vous pouvez effectuer ce qui suit: xxx < P> En outre, vous pouvez désérialiser cela comme un objet fortement dactylographié Utilisez newtonsoft.json . J'ai un exemple de mon application UWP faisant cette chose très chose ici .


3 commentaires

Merci beaucoup. C'est l'explication dont j'avais besoin. Hier, j'ai déjà trouvé une explication Comment le faire dans UWP et je pense que mon plus gros problème était de ne pas savoir qu'il existe cette classe httpClient disponible à WinRT. Je pensais avoir dû faire référence à l'ASP.NET CORE à mon application UWP en quelque sorte.


J'ai une petite question de sujet à la question du code suivant: Tâche publique message d'accueil () => Task.fromResult (nouveau message de cheeringresult {Message = "Hello World!"}); . Je n'ai jamais vu ce genre d'affectation d'une tâche à un délégué (?). Qu'est-ce que ce message d'accueil ()? Excusez cette question stupide.


@Chris J'espère que vous épargnerez et acceptez les réponses. message d'accueil () est une méthode, la syntaxe C # 6 où les membres simples peuvent être définis comme des expressions utilisant le va à opérateur, i.e.; => .



3
votes

La réponse de David Pines est suffisamment bonne si vous voulez faire toutes les choses manuellement et / ou vous n'utilisez pas Swagger.

Si vous utilisez Swagger (c'est-à-dire Swashbuckle Swagger 6.0 pour ASP.NET CORE) Pour décrire votre API reposant et générer de la documentation pour cela, vous pouvez utiliser le fichier de définition Swagger (Swagger.json) pour générer un client de repos. Un de ces outils est Autorest , créé par l'équipe Azure. Il nécessitera également Microsoft.Rest.ClientRuntime qui prend déjà en charge DotNet.

Je ne suis pas sûr que cela fonctionne avec ASP.NET CORE RTM, mais il y a eu des problèmes résolus / fermés indiquant qu'il avait pris en charge les versions précédentes et les bêtais.

Liens de package Nuget


0 commentaires

5
votes

J'ajouterai plus d'informations à ce que:

meilleure façon de consommer Web API dans UWP est d'utiliser httpClient comme mentionné précédemment.

Voici quelques exemples que je pense pourrait être utile.

La bonne pratique consiste à créer une classe mobileserviceclient où vous pouvez collecter toutes les opérations que vous pouvez effectuer sur le niveau de l'API Web: xxx

Veuillez noter qu'avec cette implémentation Vous pouvez partager le code à l'avenir si vous décidez par exemple de supporter d'autres platsfroms (comme Xamarin Android ou iOS). J'espère que cela vous aidera.


3 commentaires

D'où vient JsonConvert?


JSON.NET est un cadre JSON haute performance populaire pour .NET: Nuget.org/packages/ Newtonsoft.json (pour UWP aussi).


Merci, je n'étais pas sûr que Newtonsoft.json était prêt pour le cœur encore.