Últimas mejoras del cliente HTTP

Traducido automáticamente de Deepl

Con 4D v19R6, le trajimos una nueva forma de realizar peticiones HTTP: Las clases HTTP. En ese momento, algunas de las funcionalidades de las clases HTTP no eran definitivas, ya que queríamos adaptarlas a la nueva sintaxis. ¡Ahora ya está hecho! En la v19R7, las funcionalidades de las respuestas comprimidas, las respuestas fragmentadas y las redirecciones ya están completas.

Como extra, también hemos añadido una nueva forma de registrar las peticiones HTTP. Y como es útil para todos, este nuevo registro está disponible para las nuevas clases HTTP así como para la sintaxis heredada.

En primer lugar, permítanme hablar de las funcionalidades de las clases HTTP. Hemos informado y adaptado el funcionamiento de la sintaxis heredada para que se ajuste a la nueva sintaxis. Incluimos la mayoría de sus funcionalidades, a saber, HTTPs, autenticación de proxy y servidor, redirecciones, respuestas fragmentadas y respuestas comprimidas. También añadimos algunas funcionalidades, como la posibilidad de cancelar una petición o el nuevo registro de peticiones de clientes HTTP (llegaré a esto en el siguiente párrafo). La última funcionalidad de la que tenemos que informar en la nueva sintaxis es la persistencia de la conexión a través de un keep-alive: llegará pronto dentro de una característica mucho más destacada… que os explicaré en otra entrada del blog. ¡Estad atentos!

Ahora, hablemos del nuevo registro de clientes HTTP disponible en la v19R7.
Activar el registro del cliente HTTP es extremadamente sencillo; sólo tiene que añadir esta línea a su código:

HTTP SET OPTION(HTTP client log; HTTP enable log with all body parts)

¡Y eso es todo! Todas tus peticiones y respuestas serán registradas en el archivo 4DHTTPClientLog_x.txt en el directorio Logs con el mismo formato que los registros del servidor.

Por supuesto, puede registrar las peticiones y las respuestas por completo, pero si no quiere que sus archivos de registro se llenen de respuestas largas, puede eliminar los cuerpos de las respuestas e incluso los cuerpos de las peticiones. La sintaxis es muy parecida a la de la activación del registro del servidor, así que no te sorprenderá.

Por último, he aquí un ejemplo de una solicitud y su respuesta (sin sus cuerpos) registrados en el archivo de registro del cliente HTTP:

# REQUEST
# SequenceID: 7
# ConnectionID: DDF30D20070B0848B455971A0D627ED6
# LocalIP: 192.168.18.11:52097
# PeerIP: 192.168.4.7:3128
# TimeStamp: -1607148967
GET http://www.4d.com:80/ HTTP/1.1
Accept-Encoding: gzip, deflate
Connection: Close
Content-Length: 4
Content-Type: text/plain; charset=UTF-8
Date: Fri, 23 Sep 2022 09:30:58 GMT
Host: www.google.com
User-Agent: 4D_HTTP_Client/0.
[Body Size: 4]

# RESPONSE
# SequenceID: 6
# ConnectionID: 8EA22B111F16B04B92966DEFAA22704F
# LocalIP: 192.168.18.11:52090
# PeerIP: 192.168.4.7:3128
# TimeStamp: -1607191491
# ElapsedTimeInMs: 154
HTTP/1.1 200 OK
Cache-Control: private, max-age=0
Connection: close
Content-Encoding: gzip
Content-Length: 6185
Content-Type: text/html; charset=ISO-8859-1
Date: Fri, 23 Sep 2022 09:30:16 GMT
Expires: -1
Via: 1.1 proxy-squid (squid/3.5.27)
[Body Size: 6185]

Si tiene algún comentario sobre esta nueva función, no dude en compartirlo con nosotros en el foro oficial de 4D.

Nicolas Brachfogel
• Propietario de producto y Desarrollador Senior - Nicolas Brachfogel se unió a 4D en 2017 como Senior Developer (4D Server y networking). Como Product Owner para gestionar el lanzamiento de Apple Silicon, está a cargo de escribir historias de usuario y traducirlas en especificaciones funcionales, así como asegurarse de que las implementaciones de las funcionalidades satisfagan las necesidades del cliente. Diplomado por el Instituto Superior de Informática Aplicada (INSIA), Nicolas comenzó su carrera como desarrollador de software en 2001. Tras varios años codificando en Java y C++, pasó a especializarse en el desarrollo cliente-servidor para empresas de videojuegos. Como desarrollador/arquitecto de servidores, trabajó con éxito en las arquitecturas de servidores de muchos juegos (Dofus Arena, Drakerz, Trivial Pursuit Go!).