LINUX.ORG.RU

sbcl hunchentoot - не могу осилить *dispatch-table*


0

0

; не обращайте внимания на отступы - это писалось в gedit

(defun somepage (request)
      "This is somepage")


(defun otherpage (request)
	"This is otherpage")

(setq hunchentoot:*dispatch-table*
      (list 
	'somepage-h
	(hunchentoot:create-regex-dispatcher 
             "^/some/.*" 'somepage)
            (hunchentoot:create-regex-dispatcher 
             "^/other/.*" "aa")
	(hunchentoot:create-regex-dispatcher 
             "*" "aa")))

При переходе на localhost/fuck выдает нет такой страницы, что в общем-то и правильно. При переходе на localhost/some/tralala выдает internal error 500.

Запускаю сервер вот так:

(defvar *acceptor* (make-instance 'hunchentoot:acceptor :port 9000))
(hunchentoot:start *acceptor*)

Перерыл кучу манов и туториалов, не знаю, в чем ошибка. Подскажите пожалуйста, куда копать.

★★

Зачем постишь один и тот же вопрос в несколько мест сразу? По-коду - строка («aa») не может быть обработчиком запроса.

Перерыл кучу манов и туториалов


Сомнительно.

archimag ★★★
()
Ответ на: комментарий от archimag

Переделал код так:

(setq hunchentoot:*dispatch-table*
      (list 
	(hunchentoot:create-regex-dispatcher "^/some/.*" 'somepage)
        (hunchentoot:create-regex-dispatcher "^/other/.*" 'otherpage)))

все равно не работает.

bk_ ★★
() автор топика
Ответ на: комментарий от Falgrim

Спасибо, получилось.

Однако в мануале http://weitz.de/hunchentoot/#request-dispatch говорится, что этот параметр должен быть не-optional:

Each acceptor has a request dispatcher which is a unary function that accepts a REQUEST object. This function is called by the default method of HANDLE-REQUEST. The idea is that this function looks at the request object and depending on its contents decides to call another function which «does the work». This «other» function is by convention called a request handler.

Из-за этого возникло недоумение. Или я спутал acceptor, handler и dispatcher?

bk_ ★★
() автор топика
Ответ на: комментарий от bk_

> Или я спутал acceptor, handler и dispatcher?

Спутал. Вообще, эта *dispatch-table* пережито старый версий. Да и вообще, поставляемая система диспетчерезации убогая...

archimag ★★★
()
Ответ на: комментарий от archimag

Спасибо за подсказку, действительно легче стало :)

Falgrim
()
Ответ на: комментарий от archimag

А какой тогда наилучший вариант диспетчеризации? Я думал прописывать :request-dispatcher, но мне это показалось еще более глупым.

bk_ ★★
() автор топика
Ответ на: комментарий от bk_

А какой тогда наилучший вариант диспетчеризации?



Что за вопросы, мой, конечно ;)

archimag ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.