
Code-Garage #76 - Types MIME : utilité, format, évolution...
Durée: 8m0s
Date de sortie: 10/10/2023
Pourquoi utilise-t-on les types MIME au lieu de l'extension du fichier ? Comment créer un type MIME personnalisé ?
Notes de l'épisode :
Notes de l'épisode :
- Article d'origine : https://code-garage.fr/blog/comprendre-les-types-mime
Salut et bienvenue dans ce nouvel épisode du podcast de Code Garage,
je m'appelle Nicolas Brondin-Bernard et aujourd'hui on va parler des types MIM.
Alors le sigle MIM c'est en réalité un acronyme qui signifie Multi-Pause Internet Mail Extension.
C'est un standard qui permet de spécifier le type d'un média ou d'un fichier
qui est à l'origine utilisé pour les fichiers envoyés en piège joint dans un email.
Aujourd'hui on parle plus tellement de type MIM, on parle simplement de médiatypes.
Alors il y a de nombreuses technologies qui s'appuient sur le standard MIME,
c'est notamment le cas du protocole HTTP par exemple quand on envoie un fichier dans une requête
HTTP plutôt dans une réponse, dans une requête d'ailleurs, et bien on va devoir spécifier le type,
le content type de cette requête HTTP avec le type MIM. Alors c'est quoi le format exactement
d'un type MIM ? Eh bien c'est bien parce que ce format il est vraiment très flexible en
termes de contenu parce qu'il permet de définir des types de médias personnalisés mais par contre
il a un format de base qu'il faut absolument respecter. Chaque média est défini par un type,
un sous-type et éventuellement un ou plusieurs paramètres. Le format c'est le suivant type
slash sous-type point virgule la liste des paramètres. Alors l'exemple le plus simple
qu'on peut trouver c'est une image fichier PNG et le type MIM ça sera image slash PNG. Maintenant
si on prend un exemple un peu plus complexe pour un document HTML par exemple on va des fois
spécifier l'encodage du fichier donc le type MIM ça pourrait être texte slash HTML puis point virgule
char 7 égal utf 8. À chaque fois si on doit passer des paramètres au type MIM, eh bien ils seront
séparés par des points virgule et ça sera clé égal valeur donc ici la clé c'est char 7 pour
l'encodage et utf 8 pour le type d'encodage utilisé. Alors la plupart des types MIM ils n'utilisent pas
ou ne nécessitent pas de paramètres mais c'est important de savoir que ça existe parce que c'est
valide dans le format MIM. Les sous-types personnalisés ce qui a permis aux standards MIM d'être toujours
valables après autant d'années c'est le fait qu'ils soient facilement extensibles. C'est d'ailleurs
le cas pour beaucoup des standards et formats de données. Le type XML justement XML ça signifie
extensible c'est un langage de balise extensible et bien le type MIM c'est pareil. Donc on a des types
principaux qui eux sont au nombre de 10 avec notamment application, image, vidéo, texte et
j'en passe mais par contre les formats eux donc les sous-types peuvent être personnalisés grâce à
des préfixes. Pour tous les formats non standards le préfixe à utiliser c'est la lettre X comme
par exemple les fichiers.icos, les fichiers icones, leur format ce sera image slash x.icone sans le
E puisque évidemment c'est en anglais et pour les formats propriétaires comme ceux de Microsoft
par exemple on utilise le préfixe VND pour vendor donc on aura application slash vnd.ms
tiré excel ça ce sera pour tous les fichiers excel. Alors à noter que parfois le préfixe il est
séparé par un tiré au lieu d'un point c'est valide aussi dans la norme mais c'est donc ce
système de préfixe qui permet à la norme aux standards et bien d'être extensible à souhait et d'être
toujours pertinent aujourd'hui. Alors il y a certains formats de fichiers qui prennent de
l'ampleur et qui sont ajoutés au standard MIM après un certain temps c'est ce qu'on appelle la
standardisation c'est le cas pour les fichiers markdown par exemple qui sont passés de texte
slash x.markdown à aujourd'hui texte slash markdown donc voilà on voit que le passage à la
standardisation est très simple mais ça permet de faire rentrer réellement les types de fichiers
les types de médias qui sont de plus en plus utilisés directement dans la norme. Alors il y a
une question qui est sous-jacente à l'utilisation des types MIM c'est pourquoi ne pas utiliser
directement l'extension du fichier c'est vrai que la majorité des fichiers possède un nom qui se
termine par une extension et qui représente leur format si on prend par exemple picture.png on se
doute qu'effectivement c'est un fichier image et que son format c'est png mais en réalité il existe
de nombreuses situations où le fichier il est accessible simplement soit avec un identifiant
donc on prend l'url fictif par exemple example.com slash images slash user 34 et bien là on se doute
en lisant l'url que ça va effectivement être une image et cette image va correspondre à l'image
à l'avatar de l'utilisateur numéro 34 mais on ne connaît pas son format et on n'est pas en réalité
complètement sûr que ce soit une image ça pourrait être complètement autre chose ça pour être une
vidéo ça pourrait être plein de choses et le navigateur lui il sera pas capable d'interpréter
correctement ce fichier pour l'afficher si il n'est pas accompagné de l'antenne http et ben là on
le curance content type de point image slash jpeg là une fois qu'on a ce content type on est
sûr et certain alors à moins qu'il ait été mal renseigné mais en tout cas on est sûr et certain
que c'est comme ça que le navigateur doit l'afficher c'est un petit peu pareil pour les
pour les les fichiers qu'on a dans une machine dans un ordinateur dans un espace de stockage
bah en l'occurrence des fois on peut se tromper on peut mettre une mauvaise extension on peut l'enregistrer
et pas mettre d'extension du tout donc ça veut pas forcément dire directement ce que contient le
fichier c'est à ça aussi que servent les types et mimi alors pour conclure cet épisode on va pas
citer évidemment tous les types mimi qui sont standardisés parce qu'il y en a des centaines
mais évidemment bon connaît les plus courants image là jpeg pngf webp pour les vidéos on
a du mp4 du mpeg etc mais il est intéressant aussi de voir que le type mimi c'est une norme mais la
norme elle évolue et elle n'est pas toujours comprise par tout le monde toutes ses applications de la
manière on a notamment toujours un espèce de petit débat parce que les rfc ne sont pas très très
clair si vous savez pas ce que rfc signifie vous invite à écouter un épisode du podcast précédent
où j'explique en détail mais on a des rfc qui sont pas très très clair au niveau notamment des
scripts javascript certains disent que ce qui est actuellement obsolète c'est texte slash javascript
et d'autres disent que le application slash javascript est obsolète et c'est vrai qu'en
l'élisant c'est un petit peu dur de comprendre donc les deux en réalité sont utilisés presque
autant l'un que l'autre mais voilà il faut quand même faire attention à ce que va comprendre un
navigateur certains navigateurs on est plus sur des internet explorer etc de d'anciennes générations
peuvent comprendre certains types mimi mais pas d'autres donc voilà il faut toujours un petit peu
savoir comment ça fonctionne maintenant après les écoutes de cet épisode vous savez un petit peu
comment ça fonctionne mais il faut faire attention et bien aller chercher la compatibilité avec des
logiciels des navigateurs ou peu importe j'espère que cet épisode vous aura plu vous en aurez
appris un peu plus sur les types mimi moi je vous donne rendez vous la semaine prochaine pour un
prochain épisode du podcast ou directement sur code-garage.fr pour découvrir la nouvelle version
de la plateforme avec toujours plus de cours de formation en ligne et évidemment la liste de
tous nos articles tous nos podcasts mais il y a maintenant de plus en plus de nouvelles fonctionnalités
qui arrivent pour les utilisateurs vous avez par exemple des profits d'utilisateurs dans les
quels vous avez tous vos certificats de formation qui peuvent s'afficher et il y a plein de choses
sur la plateforme qui arrive donc je vous conseille d'aller y faire un tour. A la semaine prochaine salut !
Episode suivant:
Les infos glanées
Code-Garage
Découvrons ensemble des sujets passionnants autour du métier de dev et de la programmation en général !
Tags
Code-Garage #77 - L'histoire complète du premier emoji