gpt4 book ai didi

common-lisp - Hunchentoot 重定向列表

转载 作者:行者123 更新时间:2023-12-04 23:54:35 25 4
gpt4 key购买 nike

我网站的 URI 结构最近发生了巨大变化,我需要将所有旧页面重定向到它们对应的新页面。我有一个所有新旧 URI 对的虚线列表。目前我正在尝试为每个循环定义简单的处理程序:

(let ((redirects '(("/old/uri/example-1" . "/new/uri/example-1"))))
(dolist (redirect redirects)
(hunchentoot:define-easy-handler (???? :uri (first redirect)) ()
(redirect (rest redirect)))
))

也许有更好的方法。假设 define-easy-handler 是正确的,它需要每个简单处理程序的函数符号。我尝试了以下无济于事:

  1. 将 (gensym) 放在需要函数符号的地方
  2. 使用列表而不是点分列表,并在需要符号的地方调用(第一次重定向)
  3. 在整个事物周围放置一个准引号并在周围放置一个非引号(第一次重定向)

完成此任务的好方法是什么?

最佳答案

让我们猜测:DEFINE-EASY-HANDLER 是一个宏。

解决该问题的三种典型方法:

  • 调用底层而不使用宏 - 如果底层对程序员可用

  • 编写并使用宏

(defredirects (a . a1) (b . b1) (c . c1))) 扩展为

(progn
(hunchentoot:define-easy-handler (f-a ... a) () (... a1))
(hunchentoot:define-easy-handler (f-b ... b) () (... b1))
(hunchentoot:define-easy-handler (f-c ... c) () (... c1)))
  • 生成您要调用的表单,并在每个表单的循环中使用 eval(或 compilefuncall,如果可能的话)。

关于common-lisp - Hunchentoot 重定向列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36534244/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com