human
Transfert d'état représentatif (programmation REST ou RESTful) Peu importe ce que j'ai lu à ce sujet, je ne le comprends toujours pas. Explique comme si j'avais cinq ans.
gpt
Je suis une entreprise (serveur Web) qui stocke et traite des informations à mon siège social (site Web). Je travaille dans le secteur des jeux de rôle : mon bureau gère un service de jeux par la poste. Vous voulez jouer dans un RPG. Nous communiquons par courrier. Si vous voulez que je fasse quelque chose ( comme envoyer un message à vos camarades ) , alors vous m'enverrez une lettre expliquant ce que vous voulez , et je chercherai les informations pertinentes , ferai ce qui doit être fait , et vous enverrai une lettre en réponse en vous expliquant comment cela s'est passé et en incluant toute information que vous avez demandée. Nous devons nous mettre d'accord à l'avance sur le genre de choses que je ferai pour vous et sur la manière dont les demandes et les réponses seront rédigées. Maintenant , le service postal ( HTTP ) a ses propres règles . Il a été conçu pour une époque où les entreprises ne stockaient qu'un tas de documents différents. Chaque document était identifié par son nom et par la pièce dans laquelle il était conservé. Le service postal transportera quatre types différents de lettre de votre part : - Un " Get " est une carte postale . Vous êtes censé l'utiliser pour demander un document. Il n'y a pas d'espace sur la carte postale pour m'envoyer un document, bien que vous puissiez insérer quelques lignes à la fin du champ de la pièce et du nom. - Un « Post » est une enveloppe. Il est censé être utilisé pour m'envoyer un nouveau document à stocker, mais vous pouvez vraiment mettre n'importe quoi dans l'enveloppe. - Un « Put » est une autre enveloppe. Vous me donnez un document , et je dois remplacer un document que j'ai par celui que vous m'avez donné . - Un « Supprimer » est une carte postale m'invitant à jeter un document. Maintenant , je suis une nouvelle entreprise . Je n'ai pas vraiment de salles remplies de documents. Je ne m'occupe même pas vraiment de documents , mais de choses plus abstraites comme des " personnages " , des " jeux " et des " messages " . Je stocke toutes mes données dans une grande archive au sous-sol gérée par un entrepreneur nommé Larry. Il a des classeurs pour différents jeux , personnages , messages , etc . , et lui et moi avons notre propre système pour qu'il puisse me chercher les informations dont j'ai besoin . Étant donné que je ne travaille pas de la manière pour laquelle le service de messagerie a été conçu, comment communiquons-nous entre vous et moi ? Une solution est d'avoir une secrétaire (script) pour chaque tâche, et d'interpréter le nom d'un « document » auquel vous faites référence comme le nom d'une secrétaire qui effectue une tâche. Si vous voulez que je vous prépare un message ( disons , une description de votre personnage ) , alors vous devrez adresser une carte postale Get au secrétaire de la description dans la salle des personnages , et griffonner le nom de votre personnage dans le blanc quelque part ( par exemple /characters / description.php ?character = grignr ) . Si vous souhaitez envoyer un message à d'autres joueurs, vous enverrez une enveloppe postale au secrétariat approprié avec votre message en pièce jointe (/send_message.php). Un inconvénient est que pour que vous puissiez m'envoyer un message, vous devez savoir non seulement à quoi je m'attends à ce que le message ressemble, mais aussi à quelle secrétaire l'envoyer. Cela n'est pas toujours évident. Je peux résoudre ce problème en ayant juste une secrétaire pour prendre toutes les lettres, les lire et les envoyer à une autre secrétaire. Maintenant, il ne reste plus qu'au problème que vous avez besoin d'instructions explicites pour chaque type de lettre que vous souhaitez envoyer. REST est une approche différente. Il prend comme prémisse l'idée qu'il n'y a vraiment que quatre sortes de choses que vous pourriez vouloir faire : Créer, Lire, Modifier ou Supprimer des choses. J'ai une salle de courrier quelque part avec une fente séparée pour chaque "chose". Vous envoyez une lettre avec un nom et une salle spécifiés, et elle va vraiment à une fente dans cette salle, où quelqu'un prend et traite la demande. Si vous voulez créer quelque chose, vous envoyez un message avec la chose que vous voulez créer ci-jointe ; si vous voulez Lire quelque chose, vous envoyez un Get ; si vous voulez éditer quelque chose, vous envoyez un Put avec la chose jointe ; si vous voulez supprimer quelque chose, envoyez une carte postale de suppression. C'est tout & ndash ; il n'y a rien de plus à régler . Tout ce que vous avez besoin de savoir, c'est quelles « choses » j'ai, ce qui est assez facile à communiquer pour moi.