Руби-голиаф неблокирующее сопоставление сервера

Я пробую голиаф неблокирующий рубиновый сервер.

Для моего приложения мне нужно сделать как минимум 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, не затрагивая другие.

Другие вопросы по тегам