Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

URI type REST avec un formulaire HTML

2 réponses
Avatar
Florent Georges
Bonjour,

Je dois creer un formulaire HTML dans lequel l'utilisateur doit
selectionner 2 options dans une drop down. Donc quelque chose
comme :

<form>
<select name=3D"lang">
<option value=3D"fr">Fran=E7ais</option>
<option value=3D"en">English</option>
</select>
<select name=3D"country">
<option value=3D"fr">France</option>
<option value=3D"uk">United Kingdom</option>
</select>
<input type=3D'submit' value=3D"Go"/>
</form>

Le probleme c'est que la page vers la quelle le formulaire doit
etre =AB envoye =BB a une URI du style REST, qui ressemble a :

http://example.org/somewhere/en/uk

Comment est-il possible de naviguer vers cette page (avec les
deux derniers elements de l'URI en fonction des valeurs
selectionnees dans le formulaire) en cliquant sur le bouton
d'envoi ? Je ne tiens pas forcement a un formulaire et peux
utiliser un autre moyen si recommande.

Merci d'avance,

--
Florent Georges
http://fgeorges.org/

2 réponses

Avatar
Olivier Miakinen
[Copie et suivi vers fr.comp.infosystemes.www.serveurs]

Bonjour,

Le 22/04/2010 21:46, Florent Georges a écrit :

Je dois creer un formulaire HTML dans lequel l'utilisateur doit
selectionner 2 options dans une drop down. Donc quelque chose
comme :

<form>
<select name="lang">
<option value="fr">Français</option>
<option value="en">English</option>
</select>
<select name="country">
<option value="fr">France</option>
<option value="uk">United Kingdom</option>
</select>
<input type='submit' value="Go"/>
</form>

Le probleme c'est que la page vers la quelle le formulaire doit
etre « envoye » a une URI du style REST, qui ressemble a :

http://example.org/somewhere/en/uk" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://example.org/somewhere/en/uk

Comment est-il possible de naviguer vers cette page (avec les
deux derniers elements de l'URI en fonction des valeurs
selectionnees dans le formulaire) en cliquant sur le bouton
d'envoi ? Je ne tiens pas forcement a un formulaire et peux
utiliser un autre moyen si recommande.



À mon avis, le formulaire semble le plus naturel pour l'exemple que tu
proposes, et ce serait dommage de devoir s'en passer pour une question
de choix d'architecture.

Puisque ce formulaire permet simplement de sélectionner une page parmi
plusieurs, visiblement sans rien créer côté serveur, la méthode GET
s'impose : <form action="http://example.org/somewhere&quot; method="GET">.

Du coup l'URL appelée sera du style :
http://example.org/somewhere?lang=en&country=uk
... et un petit coup de mod_rewrite côté serveur (ou l'équivalent si tu
utilises autre chose que Apache) devrait le réécrire en :
http://example.org/somewhere/en/uk" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://example.org/somewhere/en/uk

Je fais suivre vers fr.comp.infosystemes.www.serveurs pour la syntaxe
d'utilisation du mod_rewrite, que je ne maîtrise pas. N'hésite pas à
revenir dans fr.comp.infosystemes.www.auteurs si cette solution côté
serveur ne te convenait pas et que tu cherches une méthode côté client
seulement (même si ça me semblerait à priori une mauvaise idée).

Cordialement,
--
Olivier
Avatar
Olivier Miakinen
[retour sur fr.comp.infosystemes.www.auteurs]

Le 23/04/2010 14:58, Florent Georges m'a répondu :

[...] et un petit coup de mod_rewrite côté serveur [...]



Merci pour ta reponse. C'est effectivement la solution que
j'utiliserais si je controlais le cote serveur, mais il s'agit en
fait d'un web service REST sur lequel je n'ai aucun controle, et
au URIs duquel je dois me conformer.

Je ne peux donc pas changer le format des URIs ni comment je
passe les parametres :-(



Dommage. Je n'y connais rien à REST : puisqu'ils imposent cette
architecture, ils ne fournissent pas en même temps des outils qui
permettent de s'y conformer ?

J'imagine que je dois utiliser du Javascript alors, mais je me
demande si quelque chose existe deja, comme une bibliotheque ou
autre.



Bon, je ramène la discussion sur fr.comp.infosystemes.www.auteurs (je
n'ose pas aller sur fr.comp.lang.javascript, cette discussion a déjà
assez voyagé).

À moins que les utilisateurs ne soient captifs, et forcés d'utiliser
un navigateur avec JavaScript non désactivable, tu devrais faire une
version sans JS, proposant en prêt-à-cliquer la totalité des liens,
combinaisons de lang et de country. Lorsque JS est activé, celui-ci
remplacera la version à liens multiples par un formulaire, avec
récupération du onsubmit pour reformater l'URL avant envoi.

Mais si JS est obligatoire sur les postes, tu peux te contenter de la
version en JavaScript seul.

Toutes mes condoléances,
--
Olivier Miakinen