L’une des choses que j’ai toujours trouvées élégantes dans la programmation, c’est la façon dont de petits éléments simples peuvent être combinés pour accomplir des tâches complexes. Parfois, il s’agit d’une élégance composée (comme l’enchaînement de commandes UNIX non liées entre elles pour atteindre votre but) ; parfois, il s’agit d’une élégance atomique (comme quelqu’un qui utilise quelque chose de simple d’une manière que vous n’auriez jamais imaginée).

Les URLs existent depuis plus de 20 ans. C’est une méthode pour “identifier une ressource”, ce qui signifie “pointer sans ambiguïté vers quelque chose sur Internet”. C’est comme ça qu’on les utilise normalement : Les URLs pointent vers des sites Web, des articles, des images, des chansons, des vidéos, des téléchargements – tout. La plupart des gens n’y réfléchissent pas beaucoup, en partie parce que les navigateurs Web cachent de plus en plus les URL. Mais certaines URLs ont des pouvoirs spéciaux. En voici quelques-unes qui m’étonnent.

Goodhertz – Compresseur Vulf préréglé

https://goodhertz.co/vulf-comp/2.0.1/?cm:90/wf:0/out:-7.5/cat:8/cre:1.3/csl:0/drl:0

Goodhertz est une société qui fabrique des plugins de traitement audio. Les préréglages permettent aux utilisateurs de sauvegarder leurs sons préférés, de les partager avec d’autres et de les garder en sécurité pour qu’ils puissent les revoir plus tard. C’est aussi un excellent moyen d’apprendre : si vous voulez savoir comment quelqu’un a obtenu un son excellent, ils peuvent vous montrer les réglages.

Cette URL est cool pour plusieurs raisons : tout d’abord, c’est un préréglage en soi. Passez-le au plugin audio, et le plugin utilise les paramètres de l’URL. Mais c’est aussi une page web valide qui montre les paramètres utilisés, dans un format plus lisible par l’homme. C’est excellent pour apprendre, et si vous vous trouvez dans une situation de niche, cela pourrait vous faciliter la vie.

Reddit – /r/redditlaqueristas

https://reddit.com/r/redditlaqueristas

Il n’y a rien de spécifique dans la sous-reddit Laqueristas qui m’a incité à la choisir, à part le fait qu’il s’agit d’un excellent exemple d’une communauté d’intérêts en ligne spécifique. J’aurais pu choisir n’importe quelle URL Reddit pour cette démo – et en effet, c’est ce qui rend cette URL cool. Prenez n’importe quelle URL Reddit, ajoutez.json à celle-ci, et vous obtiendrez une version JSON :

https://reddit.com/r/redditlaqueristas.json

C’est une façon très conviviale d’exposer une API ! Il permet aux programmeurs de démarrer facilement – pas besoin d’enregistrer une clé API, de configurer oAuth ou quoi que ce soit du genre. Ces obstacles sont souvent contre-productifs (car les gens se contenteront de gratter les pages Web plutôt que de franchir ces obstacles). Il ne s’agit pas seulement de sous-reddits – si vous voulez récupérer les détails de l’utilisateur, ou le contenu d’un message, cela fonctionne aussi bien là. Supprimer un.json peut aussi être utile : si vous essayez de déboguer un code qui interagit avec Reddit, vous pouvez prendre le lien pertinent et le transformer en un formulaire conçu pour la consommation humaine plutôt que d’essayer de lire dans le JSON.

Le concept de négociation de contenu existe depuis un certain temps, où vous pouvez le faire via l’en-tête HTTP Accept, mais j’aimerais vraiment en voir plus. Ne serait-il pas préférable d’obtenir une version PDF de votre reçu en ajoutant “.pdf” à l’URL ? Les sites Web peuvent utiliser <link rel=”alternate”> pour exposer ces autres versions au monde, bien que malheureusement la plupart des navigateurs ne communiquent pas ces versions alternatives aux utilisateurs.

Combiner.fm

https://combine.fm/spotify/album/4PXQAD8t4hfKeAlQiEc7mM

Il semble que l’idée d’une toile de musique ouverte soit pratiquement morte. De nos jours, tout est fermé : il n’y a pas d’interopérabilité entre Spotify, YouTube, Apple Music, Soundcloud, et ainsi de suite. Si vous partagez un titre avec un ami, que faites-vous ? Généralement, la solution la plus pratique est d’envoyer un lien YouTube. Cela a tendance à fonctionner correctement, mais ce n’est pas l’idéal4. Vous pourriez leur envoyer un lien vers votre service préféré, mais ils pourraient en utiliser un autre. Et vous ne savez probablement pas quel ami utilise quel service.

Entrez Combine.fm. Vous lui donnez un lien vers quelque chose sur un service de musique :

https://open.spotify.com/album/4PXQAD8t4hfKeAlQiEc7mM

Et il vous donne des liens vers cette musique sur tous les services qu’il peut :

https://combine.fm/spotify/album/4PXQAD8t4hfKeAlQiEc7mM

Votre ami peut maintenant cliquer sur son fournisseur de musique et écouter ce que vous avez partagé. C’est un service sympa, mais regardez l’URL : c’est assez similaire à celui de Spotify.

Cela signifie que vous n’avez pas besoin d’utiliser Combine.fm pour construire une URL Combine.fm – vous pouvez le faire vous-même, ou écrire un script pour le gérer. Si le service Combine.fm disparaît ou change, vous n’avez pas perdu un lien vers votre musique – l’ID original est intact.

Traintimes.org.uk

Traintimes.org.uk est un site qui propose des “horaires de train accessibles au Royaume-Uni”. C’est un site non officiel, mais je le préfère de loin à National Rail Enquiries. Il a un design visuel simple et fonctionne très bien sans JavaScript – ce qui signifie qu’il s’agit d’une petite page web. Les petites pages Web sont rapides à charger et fonctionnent bien même avec une faible couverture 3G. Juste ce qu’il vous faut si vous êtes au milieu de nulle part et que vous essayez de trouver un chemin pour rentrer chez vous.

L’URL est cool parce qu’elle est conçue pour être modifiable par l’homme. Regardons les trains de Londres à Brighton :

https://traintimes.org.uk/london/brighton/11:30/today

Connaissez-vous le code officiel de 3 lettres pour London Bridge, et voulez-vous voyager de cette gare en particulier ? Vous pouvez déposer ça ici :

https://traintimes.org.uk/LBG/brighton/11:30/today

Tu veux partir quelques heures plus tard ? C’est aussi un changement facile :

https://traintimes.org.uk/LBG/brighton/13:30/today

Tu planifies vraiment pour demain ? Changez la dernière partie.

https://traintimes.org.uk/LBG/brighton/13:30/tomorrow

Tout cela est documenté sur la page d’accueil du site, mais vous n’avez pas besoin de connaître ces détails pour utiliser le service. Il y a un formulaire convivial pour commencer votre recherche, et la page de résultats vous permet de naviguer vers les trains antérieurs ou postérieurs (avec le voyage de retour). Mais une interface utilisateur qui tente de répondre à tous les cas d’utilisation serait encombrée, et la prise en charge de l’édition d’URL ne coûte rien. Si vous utilisez le site assez souvent pour vous familiariser avec les URLs, il est souvent plus rapide de modifier l’URL plutôt que d’effectuer une nouvelle recherche.

Nous pouvons voir quelques principes généraux à l’œuvre dans ces URLs :

Une URL pointe vers une chose, mais elle peut aussi être la chose elle-même. Dans le cas de Goodhertz, le preset était l’URL (et l’URL était le preset). Une page de résultats de recherche est un exemple plus prosaïque : les résultats affichés correspondent aux paramètres de la recherche dans l’URL.

Les URLs peuvent être à la fois pour la consommation humaine et la consommation machine. L’URL de Goodhertz est principalement destinée à être utilisée par le logiciel – le plugin qui utilise le preset. L’URL de Traintimes est conçue pour être facile à manipuler par un humain. La page Reddit est une page hybride : facile à transformer pour un humain en un format convivial en ajoutant.json à la fin.

Les URL peuvent être robustes. Même si le service Combine.fm échoue ou meurt, vous pouvez facilement revenir aux liens originaux.

Les URL peuvent être prévisibles. Vous n’avez pas besoin de documentation API pour démarrer avec l’API de Reddit. Vous n’avez pas besoin d’impliquer Combine.fm pour générer un lien Combine.fm valide. Si vous apprenez le format des liens Traintimes, vous pouvez en taper un à la main.

Permettez aux utilisateurs expérimentés de modifier vos URL. La plupart des utilisateurs de Reddit ou de Traintimes ne vont pas récupérer JSON ou explorer les temps en modifiant l’URL, mais les utilisateurs expérimentés peuvent le faire. Il n’y a pas de coût supplémentaire à cela, mis à part la conception initiale, et vos utilisateurs bénéficient de cette option.

Les bonnes URL sont descriptives. L’URL Traintimes décrit les résultats que vous verrez. Même si vous n’avez jamais visité le site, vous pouvez faire une estimation raisonnable de ce que https://traintimes.org.uk/london/brighton/11:30/today vous montrerait.

Ces principes ne s’appliquent pas à tous les scénarios. Parfois, un lien n’est qu’un pointeur vers un document particulier en ligne. Un site Web d’actualités aurait du mal à permettre aux utilisateurs de modifier leurs liens d’une manière significative. Et parfois, vous voulez que vos URL soient difficiles à prédire (par exemple, vous ne voulez pas que les gens devinent les liens vers vos documents Google).

Les URL sont consommées par les machines, mais elles devraient être conçues pour les humains. Si votre réflexion sur l’URL s’arrête à “identifie de façon unique une page” et “bon pour le référencement”, vous passez à côté.

Catégories : geek

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *