Есть ли способ использовать другой тип пантомимы в моем приложении sinatra - PullRequest
0 голосов
/ 09 мая 2019

Я создаю свой API в Синатре, но я хочу, например, использовать следующие маршруты:

/places /places.meta /places.list /users/id/places.list

у меня это работает в рельсах, нотерпит неудачу в синатре

  def index
    case request.format.to_sym.to_s
    when 'list'
      result = Place.single_list(parameters)
    when 'meta'
      result = @parameters.to_meta
    else
      result = Place.get_all(parameters)
    end
    render json: result, status: 200
  end

1 Ответ

1 голос
/ 09 мая 2019

Sinatra не имеет встроенной концепции «формата запроса», поэтому вы должны вручную указать шаблон маршрута с учетом формата, который Rails предоставит вам автоматически.

Здесь я использую указанный шаблон маршрутав качестве регулярного выражения с именованным захватом:

require 'sinatra'

get /\/places(\.(?<format>meta|list))?/ do # named capture 'format'
  case params['format'] # params populated with named captures from the route pattern
  when 'list'
    result = Place.single_list(parameters)
  when 'meta'
    result = @parameters.to_meta
  else
    result = Place.get_all(parameters)
  end

  result.to_json # replace with your favourite way of building a Sinatra response
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...