Что если у меня есть метод API и метод контроллера / представления с тем же именем в RoR? - PullRequest
0 голосов
/ 01 апреля 2010

Предположим, я хочу иметь возможность просматривать список продуктов на моем сайте, перейдя в / product / list. Отлично. Таким образом, он использует мой вид списка и выводит некоторый HTML-код, который будет отображать мой веб-браузер.

Но теперь предположим, что я хочу предоставить REST API моему клиенту, где он может получить список своих продуктов. Поэтому я полагаю, что они будут аутентифицироваться с oAuth, а затем они будут вызывать / product / list, который будет возвращать массив JSON их продуктов.

Но, как я уже говорил ранее, / product / list отображает веб-страницу HTML. Итак, у меня конфликт.

Какова нормальная практика предоставления API в Rails? Нужно ли мне иметь подкаталог api в / app / controller и другой контроллер product? Так что мой клиент пойдет в / api / product / list, чтобы получить список своих продуктов?

Я немного новичок в RoR, поэтому у меня пока нет лучшего понимания функциональности REST, но, надеюсь, мой вопрос имеет смысл.

Ответы [ 2 ]

2 голосов
/ 01 апреля 2010

обычной практикой является использование метода response_to .Вы можете иметь один контроллер для отображения веб-страницы HTML, JSON или XML-ответа.

class StatesController < ApplicationController
  def index
    @states = State.get_states_by_country(params[:country_id])

    respond_to do |format|
        format.html
        format.json { render :json => { :prompt => t('address.select_state'),
                                        :states => @states.to_json(:only => [:id], :methods => [:name]) }}
        format.js
    end
  end
end
1 голос
/ 01 апреля 2010

С помощью response_do это на самом деле довольно просто: http://weblog.jamisbuck.org/2006/3/27/web-services-rails-style

Тогда они могут просто зайти в products / list / index.json и хорошо поехать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...