Farklı portlarda çalışan ıkı uygulama arasında veri alışverişi için API Client yöntemini kullanıyoruz.
Ikı uygulamamız olsun, A uygulaması içerisinde Person Modelimiz olsun (veritabanı kendisinde), B uygulamamız ise A uygulamasındaki Person modelindeki verileri alsın ve uzerinde CRUD işlemi yapsın. (B uygulamasının veritabanında person modeli olmayacak ...)
A uygulamasının Apı controllarını yazmaya başlayalım.
Controllers/api/v1/person_service_controller.rb dosyasını ve hiyerarşisini oluşturalım.
class Api::V1::PersonServiceController < ApplicationController
respond_to :json, :xml
def person_all
respond_with Person.all.to_json
end
def person_create
@pp= Person.new
@pp.appellation=params["appellation"]
@pp.name=params[ "name"]
@pp.speciality=params["speciality"]
if @pp.save
render json: "OK", status: :ok
else
render json: "ERROR", status: :ok
end
end
def person_show
render json: Person.find(params[:person_id].to_i)
end
def person_update
@person= Person.find(params["person_id"].to_i)
@person.appellation=params["appellation"]
@person.name=params["name"]
@person.speciality=params["speciality"]
if @person.save
render json: "OK", status: :ok
else
render json: "ERROR", status: :ok
end
end
def person_destroy
@person=Person.find(params[:person_id].to_i)
@person.destroy
if Person.where("id=?",@person[:id]).exists?
render json: "ERROR", status: :ok
else
render json: "OK", status: :ok
end
end
end
routes.rb dosyasına yönlendirme yapalım
namespace :api do
namespace :v1 do
get '/person_all', to: 'person_service#person_all'
post '/person_create', to: 'person_service#person_create'
post '/person_show', to: 'person_service#person_show'
put '/person_update', to: 'person_service#person_update'
post '/person_destroy', to: 'person_service#person_destroy'
end
end