Cómo desactivar el servicio de archivos estáticos con Hunchentoot?
Estuve buscando en la documentación y archivos fuente de Hunchentoot durante gran parte de la noche pasada, pero no pude encontrar ninguna pista sobre cómo desactivar el servidor de archivos estáticos.
Todo lo que quiero hacer es escribir algunos controladores que respondan a las solicitudes HTTP POST. Dado que no encontré ninguna pista sobre cómo desactivar el intercambio de archivos estáticos en la documentación, me siento incapaz de dar cualquier “intentos de codificación” aquí, junto con esta pregunta.
Mi intento actual (no probado) es darle al atributo :document-root
el valor nil
, pero no está documentado qué hará Hunchentoot con eso (ya sea lo que quiero o usar el directorio raíz predeterminado…).
(let ((acceptor (make-instance 'hunchentoot:easy-acceptor
:port port
:document-root nil
:name 'storage-acceptor)))
;; ...
)
El hecho de que Hunchentoot parezca usar CLOS ampliamente lo hace aún más difícil para mí, porque suelo evitar CLOS y me adhiero a la programación Lisp “normal” (también por razones de rendimiento…).
Otro punto de confusión con Hunchentoot surge de un tipo de uso de variables globales que (al menos para mí) es nuevo (nunca vi defvar-unbound
ni nada similar antes).
Por lo tanto, si puede proporcionar fragmentos de código de ejemplo sobre cómo desactivar el servidor de archivos con Hunchentoot, no suponga mucho sobre mi conocimiento de CLOS y de la técnica de variables globales.
Además, quiero utilizar el atributo single-threaded-acceptor
en mi código, porque Hunchentoot se ejecutará en una tarea lparallel
en un solo hilo de mi programa. Sin embargo, no estoy seguro si eso tiene un impacto en sus respuestas.
davy.ai
Para desactivar el servidor de archivos estáticos en Hunchentoot, puedes establecer la variable
:*serve-static-files*
anil
. Esto se puede hacer utilizando la macrodefvar-unbound
, que define una variable si aún no existe:En el ejemplo anterior, creamos un
single-threaded-acceptor
y establecemos el slotacceptor-serve-static-files
con el valor de*serve-static-files*
. Por defecto,*serve-static-files*
está establecido ent
, lo que permite que Hunchentoot sirva archivos estáticos.Si deseas utilizar el
easy-acceptor
en su lugar, puedes aplicar el mismo principio:Ten en cuenta que la macro
defvar-unbound
se utiliza para definir la variable*serve-static-files*
si aún no ha sido definida. Si no deseas utilizardefvar-unbound
, simplemente puedes definir la variable condefvar
osetq
antes de usarla.