Dopiero zaczynam swoją przygodę z RoR. Nie wiem jak stworzyć prosty web service wykorzystując rest.
Dokładniej opisując mój problem, mam aplikację napisaną w ror ( stworzona kiedyś tam ) teraz murze do niej dopisać web servis z którym będę łączył się z aplikacji mobilnych i pobierał dane, ale nie wiem jak się do tego zabrać.
Do rzeczy prosił bym o jakiś prosty tutorial albo link jak stworzyć bardo prosty ws realizujący np jakaś prostą metodę np : dodaj(a, b){ return a+b}
oraz jak napisać jakiś przykładowy prosty test sprawdzający jej działanie
proszę o jakieś w miare dokładne wytłumaczenie co i jak krok po kroku ważne żeby nie był to SOAP tylko REST
Z resztą jakoś będę walczył później i myślę że jakoś damy rade ale nie wiem jak zacząć.
Przeczytaj http://guides.rubyonrails.org/routing.html (ewentualnie zmień tylko wersje guida). To jest właśnie rest. A jak chcesz zrobić to dla urządzeń mobilnych, to przydałoby się zamiast renderować htmla, zwracać jsona. Ale to jest kolejny krok po tym jak już zrozumiesz rest.
Po dniu walki udało stworzyć się takiego małego potworka. Może nie jest doskonały i na pewno można to zrobić lepiej ale co ważne spełnia założenia i działa
Mały tutorial:
Ruby 1.9.3
Rails 4.0.0
tworzymy nowy projekt
> rails new Projekt
tworzymy jakiś kontroler
> rails generate controller Testowy
tworzymy sobie odpowiednie metody u mnie wygląda to tak :
#definiujemy dla jakich akcji będziemy wymagali logowania
http_basic_authenticate_with name: “admin”, password: “pass”, :only =>[:dodaj] #możliwe formaty odpowiedzi
respond_to :json,:html,:xml
def index #przykładowe dane @tab = [“a”=>1,“b”=> 2,“c”=> “3”]
self.res
end
nasza metoda realizująca dodawanie
def dodaj @tab = params[:a]+params[:b]
self.res
end
#może nie najlepszy ale działający sposób generowania odpowiedzi na podstawie nagłówka zapytania
def res @typ = request.content_type #response.headers[“Content-Type”] || ‘text/html’
if request.content_type == ‘application/json’
render json: @tab
elsif request.content_type == ‘application/xml’
render xml: @tab
else
respond_with(@tab)
end
end[/code]
Jeszcze tylko edytujemy plik config/routes.rb
resources :testowy do
collection do
post 'dodaj'
end
end
odpalamy z konsoli