Руби-голиаф неблокирующее сопоставление сервера
Я пробую голиаф неблокирующий рубиновый сервер.
Для моего приложения мне нужно сделать как минимум 2 определенных маршрута, скажем, "/ call_one" и "/ call_two", каждая карта должна отвечать по-своему.
В документации Голиафа упоминается функция карты, которая именно то, что мне нужно. Но это больше не существует в источнике.
2 ответа
Действительно, это было удалено, но вам это не нужно. Вы можете установить и запустить универсальный гем mapper (имея в виду, что Goliath в значительной степени совместим со стойками), например https://github.com/joshbuddy/http_router
Или вы можете просто проверить переменную окружения, чтобы увидеть, что дает вам RACK, и сделать правильную маршрутизацию, например,
class MyServer < Goliath::API
def response(env)
case env['PATH_INFO']
when '/action_1'
[200, {}, "Action 1 Response"]
when '/action_2'
[200, {}, "Action 2 Response"]
when '/'
[200, {}, "Root Action"]
else
raise Goliath::Validation::NotFoundError
end
end
end
Маршрутизатор был удален из Голиафа, так как он вызвал множество сложных случаев. Первоначальная цель Голиафа была один маршрут, один API. Таким образом, перед нами будет Nginx или HAProxy, который будет направлять на правильный сервер API Голиафа (обычно набор серверов Голиафа для каждого маршрута).
Для нас это было наилучшее решение, поскольку оно позволяло нам обновлять любой сервер API, не затрагивая другие.