2010-04-03 8 views
14

Próbuję utworzyć interfejs API dla mojej aplikacji szyny, używając odpowiedzi JSON do kontrolerów zasobów RESTful. To dla mnie nowe doświadczenie, więc szukam wskazówek i wskazówek. Aby rozpocząć rzeczy od:Szyny 3: Jaki jest właściwy sposób reagowania na REST-ful działania z JSON w szynach?

  1. Jaki jest "właściwy" sposób reakcji z JSON na metody kontrolerów REST? (tworzenie, aktualizacja, niszczenie)
  2. Czy istnieje idiomatyczny sposób wskazywania sukcesu/niepowodzenia za pomocą odpowiedzi JSON?

Dodatkowe informacje:

  • Obecnie pracuję z szynami 3.0.beta2
  • Chciałbym uniknąć za pomocą wtyczki lub gem do pracy grunt, mój celem jest lepsze zrozumienie sposobu tworzenia interfejsu Rails 3 API.
  • Linki do miejsc, w których mogłem znaleźć więcej informacji na ten temat również byłyby mile widziane, niektóre szybkie wyszukiwanie w Google nie przyniosło mi wiele dobrego.
+0

Czy dowiedzieć się tę część: „Czy istnieje sposób, aby wskazać idiomatyczne sukcesu/porażki poprzez odpowiedź JSON” –

+0

Ostatnio nie pracowałem z szynami, ale z tego, co widziałem w innych projektach, flaga Boole'a w zwróconym obiekcie JSON wydaje się być najprostszym sposobem na sprawdzenie sukcesu/niepowodzenia połączenia JSON. –

Odpowiedz

29
#config/routes.rb 
MyApplicationsName::Application.routes.draw do 
    resources :articles 
end 

#app/controllers/articles_controller.rb 
class ArticlesController < ActionController::Base 

    # so that respond_with knows which formats are 
    # allowed in each of the individual actions 
    respond_to :json 

    def index 
    @articles = Article.all 
    respond_with @articles 
    end 

    def show 
    @article = Article.find(params[:id]) 
    respond_with @article 
    end 

    ... 

    def update 
    @article = Article.find(params[:id]) 
    @article.update_attributes(params[:article]) 

    # respond_with will automatically check @article.valid? 
    # and respond appropriately ... @article.valid? will 
    # be set based on whether @article.update_attributes 
    # succeeded past all the validations 
    # if @article.valid? then respond_with will redirect to 
    # to the show page; if [email protected]? then respond_with 
    # will show the :edit view, including @article.errors 
    respond_with @article 
    end 

    ... 

end 
+0

Dokładnie tego, czego szukałem, dzięki. Pamiętam, że widziałem 'reply_with' w dokumentacji rails, ale z jakiegoś powodu nie kliknęło. To bardzo pomogło, dzięki! –

+0

Czy to oznacza, że ​​_need_ to zrobić '<% if @ article.valid? %> 'logika w widokach? – dazonic

+0

Potrzebna jest logika w widokach, aby sprawdzić, czy wyświetlić błędy. Ale zaktualizowałem swoją odpowiedź, dodając więcej informacji. – yfeldblum

Powiązane problemy