2013-12-08 3 views
3

Как можно совершать маршрутизацию в Yaws? Подобно маршрутизации в ASP.NET MVC или Rails.Маршрутизация в Yaws

Конечно, Erlang - это функциональный язык без понятий о мире оо; но можно было бы маршрутизировать http: // [domain]. [com]/controller/action/arg1/arg2/как запрос GET в модуль с именем «controller» с функцией «action/2» (или есть уже такой Lib).

ответ

5

Yaws предоставляет несколько способов сделать это:

  1. зарегистрировать appmod на пути «/» как shown in this answer, но как вопрос есть намеки, этот подход не позволяет избавиться от Суффиксы «.yaws» на ваших URL-адресах.
  2. Используйте переписывающий модуль, как shown in section 7.1.2 of the Yaws PDF documentation. Это позволит вашим клиентам использовать URL-адреса без суффиксов «.yaws» —, ваш модуль перезаписи может добавлять их туда, где это необходимо.
  3. Используйте диспетчерский модуль как described on page 52 of the Yaws PDF documentation. Обратите внимание, что этот подход обходит много полезного диспетчерского оборудования Yaws, включая обработку .yaws страниц, поэтому используйте его, только если вы действительно знаете, что вы делаете. действительно.

Из этих 3 вариантов я считаю, что модуль перезаписи является лучшим для этой конкретной проблемы.

0

Я не знаю, есть ли такой модуль, но я не вижу пользу модуля делает это:

out(Arg) -> 
    Uri = yaws_api:request_url(Arg), 
    Path = string:tokens(Uri#url.path, "/"), 
    Method = (Arg#arg.req)#http_request.method, 
    out(Arg, Method, Path). 

out(_Arg, 'GET', [Module, Function | Args]) -> 
    apply(Module, Function, Args). 

С некоторой обработки ошибок и так. Кстати, хороший способ получить взломанный.

+0

Вы правы. Итак, есть ли способ избавиться от «[...]. Рысканий» везде в путях? –

+0

Я думаю, что документация по рысканиям должна быть полезной http://hyber.org/yapp_intro.yaws здесь. –