# Systmes > Windows > IIS >  IIS pour requter sur API Swagger

## Pierre Fauconnier

Salut.

Afin de pouvoir requter via une api Swagger, je dois installer IIS sur mon ordi (Windows 10). Je n'ai pas beaucoup de doc sur IIS lui-mme de la part du prestataire Swagger, et je ne sais donc pas quoi installer ni comment.

IIS Express est-il suffisant? Si non, que dois-je installer? Certains d'entre vous ont-ils dj install IIS sur W10 et pourraient-ils me tuyauter sur des tutos ou autres?

D'avance, merci pour vos infos.

----------


## Incorporated

Bonjour,

Il existe un outil intgr  Windows 10 qui permet d'excuter IIS.

Voici un petit tutos d'explication pour l'installation :

https://blog.itgs-solutions.ch/windo...-web-dans-iis/

Je n'ai jamais utilis IIS sur Windows 10 mais rien ne vous empche de monter une machine virtuelle afin de tester.

En revanche, son utilisation  l'air assez proche d'un serveur IIS classique.

----------


## Pierre Fauconnier

Merci pour ton message et pour le lien donn. Cela m'a bien aid pour trouver comment ouvrir IIS et configurer le site.

J'ai en fait pu trouver le iis sur mon windows 10 et j'ai configur selon les donnes techniques transmises par le fournisseur de donnes. Je n'arrive pas  me connecter au site via httprequest => "le dlai imparti  l'opration est dpass". N'ayant pas beaucoup d'aide de la part de ce prestataire, je suis bloqu  ce niveau. Pourtant, j'arrive  me connecter sur sa base de tests, mais il y a plus de scurit pour les vraies donnes et il faut travailler au travers d'un proxy. Apparemment, c'est l que le bt blesse et je ne trouve pas de doc ou d'exemples pertinents  ce niveau, ni chez le prestataire ni sur le web...

C'est donc un peu "rame, rame, rameurs, ramez, on n'avance  rien dans c'cano"  ::ptdr::

----------


## Incorporated

Et bien, si je ne m'abuse, l'utilisation de IIS permet d'hberger son site Web.

Donc techniquement, vous devriez pouvoir accder (depuis votre Windows 10)  votre site web (si vous n'avez pas configur de port spcifique) en tapant http://localhost ou bien http://127.0.0.1

Mais dans votre message, une chose m'interpelle, vous parlez de passer  travers un Proxy, j'ai d mal  cerner votre demande concernant la relation entre la cration du site web sur votre Windows 10 et votre prestataire ?

Si vous crer un site web sur votre Windows 10, ce serait plutt de faire se requter par d'autres machines sur le site web prsent sur votre Windows 10 non ? 

Si vous pouviez m'clairer sur votre besoin, sur le Qui se connecte O, je pourrais vous donner plus d'informations.

----------


## Pierre Fauconnier

Merci de t'accrocher au sujet.

J'avoue ne pas savoir moi-mme pourquoi je dois utiliser un proxy et pourquoi a passe par IIS.

Mise en contexte:

J'utilise Swagger pour interroger une base de donnes distante lie  un erp. L'API Swagger requiert une connexion au site Web et utilise un protocole de requtes pour renvoyer un json, par exemple http://monsite.com:2100/api/v1/customers pour rcuprer la liste des clients dans un json. Grce  l'adresse Web et une cl, je sais atteindre la base de tests et requter pour rcuprer des donnes. Ca fonctionne trs bien et je n'ai pas besoin de proxy ni de iis ni de quoi que soit d'autre, juste le couple adresse/cl. Il n'est donc pas question pour moi de crer un site web, mais simplement d'interroger une url avec une cl pour recevoir un json en retour.

Ce prestataire a vendu une solution erp  mon client et je dois maintenant interroger la base de donnes de mon client (autre url et autre cl) pour rcuprer les donnes relles de son exploitation et mettre en place les tableaux de bord dans Excel. C'est l que a se corse. Avec l'URL de mon client et la cl qui va avec, je sais interroger le service lorsque je suis connect via le rseau de mon client (chez lui, donc). Lorsque je souhaite interroger les donnes hors de son rseau, je dois utiliser un proxy (pour des mesures de scurit qui me passent largement au dessus de la tte). Le prestataire m'a fourni ces infos pour y arriver, et j'ai donc configur iis et le "site web" comme dcrit dans la doc (du moins je le pense, mais comme a ne fonctionne pas, il y a un problme quelque part). Je reois le message "le dlai imparti  l'opration est dpass". Je prcise que je rcupre les donnes au travers de HTTPREQUEST en VBA et que sur la base de tests, cela fonctionne trs bien.

Evidemment, le prestataire "s'en lave les mains" et ne m'aide pas au del de la doc fournie, se dfaussant en disant que la configuration du proxy ne le regarde pas et qu'il n'offre pas ce service aux clients.


Voil o j'en suis,  deux doigts d'envoyer le client et le prestataire sur les roses, car ce n'est clairement pas mon "core business" de m'atteler  ce genre de trucs auxquels je ne pige que dalle  :;): .

----------


## Incorporated

Merci pour ses explications beaucoup plus claire afin de comprendre votre demande.

Dans un premier temps, si vous avez suivi la documentation d'installation  la lettre, je part du principe que celle-ci est correct.

La question que je me pose c'est,  partir de quel moment, vous devez utiliser ce serveur pour rcuprer les requtes ? Lorsque vous tes en tltravail ? (si vous en faite) Lorsque vous tes dans votre socit et non chez votre client ?

Parce que l ce qui m'interpelle dans votre explication c'est,  quel moment vous avez une connexion rseau chez votre client ? via un VPN ? Une rgle de routage ?

----------


## Incorporated

Ha et je viens de voir qu'il y a une partie de rcriture URL, vous avez mis quoi comme configuration pour le serveur o rside Hermes Consult API ?

----------


## Pierre Fauconnier

Lorsque je suis chez mon client et connect  internet de chez lui via son rseau e nwifi, a fonctionne sans soucis. Mais je dois pouvoir interroger ses donnes de chez moi et 'est l que a coince. La doc renseigne plus haut n'est utile que "hors rseau du client". Je dois prciser que l'adresse ip utilise pour la connexion aux donnes est http://172.xx.xxx.x:2100 et que les donnes sont hberges chez le prestataire.

Le problme vient peut-tre d'une mauvaise configuration de httprequest, mais je ne trouve pas des masses de doc  ce sujet sur le web. Je prcise que httprequest fonctionne bien avec la base de tests et avec la base de prod lorsque je suis chez le client. C'est uniquement lorsque je suis  distance que a pose problme, sans doute  cause d'une mauvaise configuration du proxy et/ou de la rcriture d'url.

J'en suis l. Je suis actuellement en ligne avec le support de Syneton (le prestataire), mais c'est un langage de sourds, pour l'instant.

----------


## Pierre Fauconnier

> Ha et je viens de voir qu'il y a une partie de rcriture URL, vous avez mis quoi comme configuration pour le serveur o rside Hermes Consult API ?


Je ne comprends pas la question ^^

----------


## Incorporated

D'accord je vois, donc en rcriture URL vous avez bien renseign http://172.xx.xxx.x:2100 ?

Vous sr que ce n'est pas Https ?

Est-ce que lorsque vous tes hors du rseau du client, vous arrivez  ping l'adresse IP mentionne ?

Qu'avez-vous mis galement dans la partie Match URL => Modle ?

----------


## Pierre Fauconnier

L'adresse de connexion est http://xxx.xx.xxx.x:2100/api/v1/yyy o les x sont bien entendu remplacs par l'adresse ip et les yyy constituent la requte proprement dite, en GET (Customers, Invoices, ...)

Au niveau du pattern de l'url, la doc renseigne _consultapi/(.*)_. J'ai modifi en _api/(.*)_ pour correspondre  l'adresse, et dans les proprits de l'action, j'ai plac _http://172.31.180.4:2100/api/v1/{R:1}_ comme renseign dans la doc pour remplacer je suppose (.*) par tout ce qui suit l'url... (sur base de mes connaissances en regexp)...

Au dbut de mes tests, j'avais comme rponse "adresse incorrecte" ou quelque chose comme a, puis actuellement, j'ai le problme de dlai dpass, ce qui me fait dire que j'ai avanc, mais pas assez...  :;):

----------


## Incorporated

J'aurais plutt renseign ceci en modle _api/v1/customers/(.*)_  non ? ou bien _api/v1/(.*)_

----------


## Pierre Fauconnier

Oui, ce n'est pas https. Chez mon client, a fonctionne sans proxy et en http sur l'adresse http://172.xx.xxx.x:2100

----------


## Pierre Fauconnier

> J'aurais plutt renseign ceci en modle _api/v1/customers/(.*)_  non ? ou bien _api/v1/(.*)_


Pour moi, non, car ce n'est pas toujours _customers_. _customers_, c'est la requte proprement dite. Sur base de la doc, on a donc la racine http://172.xx.xxx.x:2100/api/v1/ qui est fixe et _customers_ qui est variable et qui peut tre remplac par n'importe quelle requte accepte par Swagger. C'est pour cela que le modle est _api/(.*)_ ou (.*) sera remplac par tout ce qui suit _api/_ dans l'adresse envoye au serveur.

Pour _api/v1/(.*)_, j'aurais plutt rcrit cela ainsi aussi, mais a ne change fondamentalement pas les choses, c'est juste que (.*) ne contient pas V1/, mais le test de rcriture fonctionne avec les deux modles. Je pense que le problme n'est pas dans la rcriture de l'url mais en amont, au moment de la connexion, probablement dans la configuration du proxy.

----------


## Incorporated

Je m'interroge sur le lien avec le {R:1}, cela signifie qu'il fait rfrence  la valeur arrire.

Vous pouvez avoir plus d'informations ici : 

https://weblogs.asp.net/scottgu/tip-...rite-extension

----------


## Pierre Fauconnier

La doc renseigne bien {R:1}



Et lorsque je teste la rewriting, a donne le rsultat suivant qui me semble correct

----------


## Incorporated

Pouvez-vous montrer la configuration de votre pattern (Modle) ?

----------


## Pierre Fauconnier

Ce n'est pas sur l'image fournie? ==> api/v1/(.*)

----------


## Incorporated

Ha je n'avais pas cette image... j'avais un lien en http://...

----------


## Incorporated

Et si vous ajoutez _(.*?)/_ devant _api/v1/(.*)_ ?

----------


## Pierre Fauconnier

C'tait l'image d'un autre essai  :;): 

Par contre, je me trompe peut-tre en envoyant l'adresse au httprequest. J'envoie http://172.xx.xxx.x:2100/api/v1/customers , mais je dois peut-tre entr l'adresse du site cr sur IIS. Le problme, c'est que c'est local et qu'il n'accepte pas l'adresse que je lui donne. Je dois lui donner une adresse http mais je ne vois pas quoi lui donner pour le site cr. J'ai essay _http://localhost:84/api/v1/customers_ sans succs (le site est sur le port 84).

----------


## Pierre Fauconnier

> Et si vous ajoutez _(.*?)/_ devant _api/v1/(.*)_ ?


Le test de la regexp fonctionne, donc je reste persuad que ce n'est pas  ce niveau que a joue. Je ne suis pas un grand spcialiste des regexp mais je pense que la rcriture est correcte. C'est soit dans la config du proxy, soit plus probablement dans ma faon d'interroger le site au travers du proxy grce  httprequest. Je pense vraiment que c'est  ce niveau que a bloque.

----------


## Incorporated

> C'tait l'image d'un autre essai 
> 
> Par contre, je me trompe peut-tre en envoyant l'adresse au httprequest. J'envoie http://172.xx.xxx.x:2100/api/v1/customers , mais je dois peut-tre entr l'adresse du site cr sur IIS. Le problme, c'est que c'est local et qu'il n'accepte pas l'adresse que je lui donne. Je dois lui donner une adresse http mais je ne vois pas quoi lui donner pour le site cr. J'ai essay _http://localhost:84/api/v1/customers_ sans succs (le site est sur le port 84).


Sur votre IIS, vous avez bien crer un site web avec un nom ? et bien essayer de requter le http de ce nom. Par exemple http://mycompany (si c'est ce nom que vous avez choisi pour votre site web local)

Et je vois que vous avez mis :84, vous avez mis votre serveur local sur le port 84 ?

----------


## Pierre Fauconnier

Ca ne fonctionne pas

Par dfaut, un site web est cr dans iis (son nom est _Default Web site_ sur le port 80). Son "adresse" n'est videmment pas son nom, vu les espaces. Via un explorateur internet, je n'arrive pas  me connecter sur ce site, je dois passer par file:///c:\intepub\wwwroot\index.html. Par exemple, http://localhost:80/index.html me renvoie une erreur 502.3 Bad Gateway.

J'ai exactement le mme problme avec le "site" cr pour mon client. file:///C:/inetpub/fiduciaire2001/index.html fonctionne et m'affiche bien la page index.html, mais si j'essaie http://localhost:84/index.html, j'arrive  l'erreur 502.3. L'url demande est "correcte", le chemin d'accs physique est correct (c:\inetpub\monclient\index.html) mais a reste une erreur. Je suis vraiment  court d'ides, mais ce n'est clairement pas mon core business

----------


## Incorporated

Vous avez le raccourci vers votre site prsent sur le ct droit :



Est-ce qu'en cliquant dessus, vous tomber sur le mme rsultat ?

----------


## Pierre Fauconnier

Oui, c'est la mme erreur, que ce soit pour le site par dfaut ou pour celui que j'ai cr.

Bien entendu, le serveur WEB est dmarr ainsi que les sites. Pour tre sr, j'ai arrt le service puis l'ai redmarr ainsi que les sites, et c'est toujours le mme problme.

EDIT:

En arrtant puis en redmarrant le serveur, a fonctionne avec le raccourci sur la droite: http://localhost:84 fonctionne galement.

Par contre, la requte httprequest renvoie maintenant une erreur 404.

Je quitte pour +/- 1 heure. Je referai des tests  tte repose tout  l'heure.

MERCI pour ton acharnement  :;):

----------


## Incorporated

Le fait que vous ayez le "Default Web Site" ne me parat pas conforme  la procdure :



Vous devriez donc avoir un nom de site web local que vous avez cr.

----------


## Pierre Fauconnier

J'ai les deux: Default Web Site (sur le port 80) cr par IIS au moment de l'installation, je suppose, et le site que j'ai cr sur le port 84. Les deux sont fontionnels (leur chemin d'accs dans le panneau de droite fonctionne et http://localhost:80 et http://localhost:84 dans l'explorateur permettent d'afficher la page d'accueil de chaque site.




A ce stade, je pense donc que le problme de l'installation est rgl, et qu'il reste maintenant  utiliser le httprequest en VBA en utilisant la bonne adresse et en configurant correctement la connexion au Proxy du httprequest.

A ce stade, je n'ai pas encore trouv de doc utile.

----------


## Incorporated

Oui la configuration semble bonne.

Est-ce que vous tes bien redirig vers le site web en 172.XX.XX.XX ??

Vous pouvez peut-tre partager votre code VBA ?

----------


## Pierre Fauconnier

Voici le code:

C'est le code d'acquisition du texte json du token qui permettra de requter par la suite. C'est en rponse au Send que je reois l'erreur 404


```

```

----------


## Incorporated

Je suis loin d'tre un expert en code mais je vais continuer d'essayer de vous aider.

Lorsque vous requter habituellement ce site, est-ce que vous avez besoin de credential ? peut-tre que c'est une piste  explorer.

Et vu que votre IIS est devenu un "proxy", est-ce que la configuration proxy dans le code VBA est ncessaire ? vu que vous requter votre site local, c'est lui qui se charge de faire la redirection.

----------


## Pierre Fauconnier

Je prcise que le code est fonctionnel. J'ai une connexion sur le site de tests du prestataire, qui ne requiert pas de proxy et je rcupre les donnes sans soucis. Je viens de retester en basculant sur les donnes de test et je reois bien le json du token.

Le code en lui-mme est donc ok, ce sont les paramtres qui sont passs pour la connexion au site de prod qui ne sont pas corrects, alors que ce site de prod requiert le proxy, d'o le tralala avec IIS et proxy comme mentionn dans la doc cite plus haut.

Sans les paramtres du proxy dans le code, j'obtiens la mme erreur. J'avais pens comme toi et donc essay sans le proxy, mais j'ai tout de mme essay  nouveau toujours avec l'erreur 404. A ce stade, je pourrais penser que iis fait mal sa rcriture d'url, puisque j'obtiens une vieille Peugeot => l'adresse rellement envoye ne serait pas bien recompose. Mais j'ai retest l'criture au niveau de l'IIS manager et j'obtiens bien {R:1} = token/xxxxxxxxx.

----------


## Incorporated

Et bien effectivement, le fait de parler de proxy sur la configuration faite sur le IIS n'est pas rellement juste.

En fait, il s'agit d'un Reverse Proxy avec la configuration suivante :



Vous avez install l'extension supplmentaire https://www.iis.net/downloads/micros...equest-routing ?

De plus le fait d'utiliser le port 84 me plait gure, en effet, il ne s'agit pas du port de communication du protocole HTTP. Le protocole HTTP communique sur le port 80. Peut-tre fouiller de ce ct et modifier votre serveur IIS en fonction de a ? inverser les ports entre votre Default et votre cration de site.

----------


## Pierre Fauconnier

Oui, j'ai cette extension et j'ai paramtr Application Request Routing comme indiqu dans la doc et sur l'image que tu as fournie.

Par contre, je viens d'avoir l'informaticien de mon client (pas du prestataire de l'api) qui me dit que a doit tre un problme de redirection de son ct, car 172.xx.xxx.x:2100 serait une adresse locale et il doit paramtrer son serveur pour permettre d'entrer. Il va me fournir une adresse pour me connecter dbut de semaine prochaine et je pourrai reprendre les tests avec cette adresse. Je rle quand mme ferme que le prestataire n'ait pas t plus clair, tant dans sa doc en ligne que dans les nombreux changes que j'ai eu avec lui et qui se sont solds par un "tire ton plan"...

On va donc peut-tre progresser...

Je te remercie normment pour ton aide et ta tnacit, car tes interventions m'ont de toute faon permis de mieux comprendre et de mieux paramtrer. Je t'informerai des rsultats via cette discussion.

Je te souhaite un excellent weekend!

----------


## Pierre Fauconnier

En fait, il fallait que l'ICT ouvre le port 2100 de l'adresser 172.xx.xxx.x et il m'a fourni une adresse en dyndns pour entrer sur le serveur. Du coup, pas besoin d'IIS, de proxy, de url rewriting et autres. Juste une put* d'intervention de 30 secondes l o j'ai perdu 2 jours  chercher  cause d'un dialogue de sourds entre le prestataire de l'erp et moi (faut dire que ce sont des flamands et que mme s'ils parlent "bien" franais, ils n'ont peut-tre pas compris le problme et m'ont envoy sur une mauvaise piste)

Le problme est donc rsolu et n'a en fait rien  voir avec IIS, mais je veux encore une fois te remercier pour ton acharnement. J'ai vraiment apprci ta volont  trouver une solution!

Bon weekend!

----------

