URL: https://linuxfr.org/users/doupatex/journaux/%C3%A9diter-une-ressource-http Title: Éditer une ressource HTTP Authors: doupatex Date: 2008年10月02日T04:01:42+02:00 Tags: firefox Score: 9 1. **La théorie** Le protocole [[HTTP]] (Hypertext Transfer Protocol) permet à un client de lire, créer, modifier et supprimer des ressources Pour éditer une ressource, le programme client doit envoyer une requête PUT à l'[[URL]] (Uniform Resource Locator) de la ressource cible, et placer les données dans le corps de la requête. L'en-tête "Content-Type" permet au client d'indiquer le type des données (qui peut faire l'objet d'une négociation). L'interprétation des données est à la charge du serveur. 1. **Le problème** Si on utilise comme client un navigateur web classique (IE, Firefox, Lynx, ...), on est restreint aux méthodes GET et POST. Ce problème est bien connu des adepte de l'architecture [[REST]] (Representational state transfer). Mais avant de pouvoir envoyer des données au serveur, le navigateur doit d'abord afficher un formulaire à l'utilisateur. Ce formulaire peut être vu comme une représentation de la ressource à modifier, au même titre que du HTML simple. Aujourd'hui, le formulaire et la représentation HTML d'une ressource doivent «habiter» à des URLs différentes. Il me semble que c'est une limitation des navigateurs actuels. 1. **Pourquoi ?** Une URL est l'adresse d'une ressource, et non celle de la représentation (entity) d'une ressource. Il paraît donc illogique d'avoir deux URLs pour la même ressource. De plus, le protocole HTTP permet déjà la négociation de la représentation d'une ressource, au moyen de divers en-têtes (en particulier `Accept`, une liste de types [[MIME]] (Multipurpose Internet Mail Extensions)). 1. **Comment ?** Si les navigateurs pouvaient savoir quand l'utilisateur souhaite modifier une ressource, ils pourraient demander au serveur une représentation comprenant un formulaire HTML, à la même URL que la ressource. Il manque donc deux éléments : * un type MIME indiquant du code HTML avec un formulaire, et * un élément d'interface permettant à l'utilisateur de demander l'édition d'une ressource. Le type MIME pourrait être par exemple : `text/html+form`. L'élément d'interface pourrait être signalé par une nouvelle balise, ou par une convention du type [[microformat]]. Par exemple une balise `button` dont l'attribut `name` ressemble à "http://example.com/res1?edit". Côté serveur, le code de la ressource ressemblerait à : si content-type ressemble à `text/html+form` alors £spaces£ £/spaces£envoyer un formulaire pré-rempli sinon £spaces£ £/spaces£envoyer la page habituelle finsi 1. **Les obstacles** Cette proposition demande une modification des navigateurs, et l'ajout d'un nouveau type MIME, deux choses nécessitant un large consensus parmi les développeurs et les utilisateurs. Peut-être que d'ici là, les développeurs des principaux navigateurs auront aussi implémenté un moyen de se déconnecter après une authentification HTTP... On peut toujours rêver :-)