Dans 4D 19 R6, nous avons introduit les classes HTTP pour moderniser la syntaxe et améliorer les fonctionnalités de nos commandes du client HTTP. S’appuyant sur cette base, 4D 20 R6 apporte une nouvelle fonctionnalité puissante : les agents HTTP. Ces agents permettent aux développeurs de personnaliser et d’optimiser leurs connexions aux serveurs HTTP en gérant la persistance et la réutilisation des connexions pour les requêtes HTTP.
HDI Gestion des requêtes HTTP avec les agents HTTP
Comprendre les agents HTTP
Si vous devez effectuer plusieurs requêtes auprès du même serveur HTTP, vous préféreriez les optimiser à la fois pour le client et pour le serveur. L’une des méthodes les plus courantes consiste à conserver une connexion unique pour toutes les requêtes afin de ne pas avoir à négocier une nouvelle connexion entre les requêtes, en particulier une connexion sécurisée. C’est là que les agents entrent en jeu, car ils gèrent la réutilisation des connexions afin d’optimiser vos requêtes.
Tout d’abord, il est important de savoir que même si vous ne changez rien dans votre code, vous bénéficierez des agents : tous vos HTTPRequests utiliseront un agent par défaut si vous n’en fournissez pas. Cet agent gérera la persistance de vos connexions à travers un simple mécanisme de keep-alive, de sorte que lorsque vous envoyez plusieurs requêtes au même serveur, il réutilisera les connexions si possible au lieu d’en créer une nouvelle pour chaque requête.
Cet agent par défaut est le plus simple que vous puissiez imaginer, mais vous pouvez (et devriez) créer votre propre agent. Les agents peuvent vous permettre d’affiner vos connexions, en vous donnant le contrôle sur le mécanisme de keep-alive, en vous permettant de choisir le nombre maximum de connexions simultanées à un serveur spécifique, en ajoutant des timeouts pour éviter de garder les connexions indéfiniment ou même en configurant vos connexions TLS/SSL au niveau de l’agent au lieu de le faire pour chaque HTTPRequest.
L’utilisation d’un agent pour HTTPRequest est extrêmement simple ; il suffit d’utiliser ce bout de code :
var $requestOptions:={/*here you put the agent options*/}
var $myAgent:=4D.HTTPAgent.new($requestOptions)
var $requestOptions:={}
$requestOptions.agent:=$myAgent
var $myRequest:=4D.HTTPRequest.new("www.4D.com"; $requestOptions)
Conseil 1
HTTPAgent est un objet partagé. Par conséquent, vous pouvez en ajouter un à une classe singleton afin d’utiliser le même agent pour toutes les requêtes adressées au même serveur.
Conseil 2
Vous pouvez demander à plusieurs serveurs d’utiliser le même agent. Dans ce cas, chaque serveur aura son propre pool de connexions utilisant les mêmes options d’agent.
Avec les agents, les classes HTTP couvrent désormais toutes les fonctionnalités des commandes HTTP et même plus, c’est donc le bon moment pour passer entièrement à cette nouvelle syntaxe. Si vous avez des questions sur les classes HTTP ou les agents en particulier, n’hésitez pas à les poser sur le forum 4D.