La problématique :

Aujourd'hui, nous nous penchons de plus près sur une API qui vous permettra de raccourcir vos URL. Arrivé avecx twitter (qui limite le nombre de caractères par posts), l'idée est d'avoir un alias, un raccourcis, vers une longue URL. Vous le savez surement, les moteurs de recherches tels que google indexent les pages et les note selon plusieurs critères. L'un des critères est l'URL proprement dite. C'est la raison pour laquelle les techniques d'URL rewriting ont été misent en place. Petit rappel simpliste, l'url rewriting consiste, grosso modo, en une table de corerspondance dynamique. Lorsque vous créez une parge aves des paramètres d'identification (ex : http://www.aujourdhuianancy.com/jevents/identificateur_evenement=69957), l'url rewriting transforme l'URL en https://www.aujourdhuianancy.com/agenda/detailevenement/69957/rencontres-de-createurs-au-chateau-de-luneville-durant-les-journees-europeennes-des-metiers-d-art. Et vous voyez que derriere le dernier slash, la chaine de caractères "au-jour-le-jour" est en fait le titre de l'événement. Ce titre étant inclus dans l'URL, il aura un "poids" plus fort dans l'indexation google.

Toutefois, cette nouvelle URL compte 159 caractères. Si vous voulez la joindre à un poste twitter, vous n'aurez pas assez de place pour cette adresse (alors je ne parle même pas d'ajouter un texte personnel) car Twitter limitait à 140 caractères, passé à 280 le 7 novembre 2017. De ce fait, comment conciler "l'article" twitter et l'URL ? Il a été uestion (et je croi que c'est encore le cas) de ne pas prendre en compte les caractères de l'url, mais il y a eu machine arrière sur ce cas. la solution ? Avoir recour à des raccourcisseurs l'URL (bit.ly, shorten....) qui gèrent des tables de correspondances entre l'URL réelle et l'URL réduite.

 

 

Le service interrogé :


Nous allons voir l'API du raccourcisseur d'URL de gooLNK. Si cela vous interesse, toute la documentation, en détail, de goolnk est disponible en ligne. Super simple à utiliser, il peut facilement s'intégrer à vos programmes par un simple post.

La commande est la suivante :

curl -XPOST -d 'url=https%3A%2F%2Fgoogle.com%2F' 'https://goolnk.com/api/v1/shorten'

.
Vous noterez que, bien évidemment, l'URL est URLEncodée mais ca tombe un peu sous le sens, c'est une URL !

Le décomposition de la commande :

  • curl : appelle de la commande curls (qui a d'ailleurs fêté ses 20 ans récemment)
  • -X POST : la requête HTTP doit est envoyée en mode POST au serveur
  • 'url=https%3A%2F%2Fgoogle.com%2F' (attention au cotes !) : c'est le paramètre de l'URL URLEncodée (les caractères invisibles sont "numérisés"). Pour ceux qui ne le savent pas, une explication que je trouve simple, issue de la documentation de php sur PHP.NET : "Retourne une chaîne dont les caractères non alphanumériques (hormis -_.) sont remplacés par des séquences commençant par un caractère pourcentage (%), suivi de deux chiffres hexadécimaux. Les espaces sont remplacés par des signes plus (+). Ce codage est celui qui est utilisé pour poster des informations dans les formulaires HTML. Le type MIME est application/x-www-form-urlencoded. Ce codage est différent de celui spécifié dans la » RFC 3986 (voir rawurlencode()) : pour des raisons historiques, les espaces sont remplacés par des signes plus (+)."
  • 'https://goolnk.com/api/v1/shorten' : c'est une chaine de caractères, codée sous la forme d'une URL (mais ca ne pointe pas sur une page web, c'est simplement une manière de "localiser" la methode de l'API dans sa hiérarchie, tel que le ferait en programmation objet) qui explicite quel "bout de programme", de Google en l'occurence, lancer pour avoir accès a la fonctionnalité de raccourcisseur d'URL (ca en fait des conditions en 1 chaine).

     

Le résultat :


Vous l'aurez compris, le retour est... une chaine raccourcie.

Il ne m'est pas possible comme à mon habitude de vous intégrer le code car le retour la commande curl s'integre pas facilement dans mon CMS. Toutefois, je vous mets en exemple le modèle de lien à utiliser pour aboutir à ce résultat :

curl -XPOST -d 'url=https%3A%2F%2Fgoogle.com%2F' 'https://goolnk.com/api/v1/shorten'

    • En bleu, la chaine "url=" à laquelle il faut concatèner la chaine à raccourcir,
    • En rouge, la constante (et oui) a appeler qui correspond à l'API de raccorcicement de chaine


En retour, une chaine JSON de la forme {"result_url":"https:\/\/gxolnk.com\/AqJYaW"}, chain JSON à décoder pour en extraire l'url raccourcies (noter qu'il faut aussi gérer les echappements)