พิม
rails new appNameเพื่อทำการสร้าง โปรเจ็ค แบบอัตโนมัติขึ้นมาก่อน
และในการที่ เราจะทำ soap application นั้น เราจะใช้ gem wash_out
https://github.com/inossidabile/wash_out
ให้เข้าไปที่
....\appName\Gemfile
ทำการเพิ่ม
gem 'wash_out'
แล้วเซฟ
แล้วทำการใช้งาน
bundle install
เพื่อโหลด wash_out มาใช้งาน
ทำการสร้างโมเดล shop แล้ว โดยกำหนด name เป็น string โดยพิมพ์คำสั่ง
heroku run rails g model shop name:string
ทำการสร้างโมเดล bill แล้ว โดยกำหนด dateเป็น dateโดยพิมพ์คำสั่ง และ refences ไปยัง shop ตาม ER Diagram ด้านบน
heroku run rails g model bill date:date shop:references
ทำการสร้างโมเดล orders แล้ว โดยกำหนดชื่อกาแฟเป็น integerโดยพิมพ์คำสั่ง และ references ไปยัง order
heroku run rails g model orders espresso:integer cappuccino:integer latte:integer mocha:integer bill:references
รัน rake db:migrate เพื่อทำการสร้างดาต้าเบส
Routes
จากนั้นไปที่ไฟล์
....\appName\config\routes.rb
ทำการเพิ่ม คำสั่งดังนี้
AppName::Application.routes.draw dowash_out :rumbasend
โดยที่ AppName ดูได้ที่ไฟล์ application.rb (แล้วแต่การใช้งาน)
และ service ใน แถว wash_out :service
นั้น คือ ชื่อไฟล์ Controller
Controller
ซึ่งในโฟล์เดอร์
...\appName\app\controllers
สร้างไฟล์ ใหม่ชื่อ service_controller.rb และมีโค้ดดังนี้
class ServiceController < ApplicationControllersoap_service namespace: 'urn:WashOut'
soap_action "get_shop_name_by_id",:args => { :id => :integer},:return => :stringdef get_shop_name_by_idrender :soap => ((Shop.find(params[:id]))[:name])end
soap_action "create_news_shop",:args => { :name => :string},:return => :stringdef create_news_shopShop.create_new(params[:name])render :soap => "create news shop success"endsoap_action "create_news_order",:args => { :a => :boolean , :b => :boolean, :c => :boolean, :d => :boolean },:return => :stringdef create_news_orderOrder.create_new(params[:a],params[:b],params[:c],params[:d],1)render :soap => "create order success"endend
โดย
soap_service namespace: 'urn:WashOut'
เป็น ส่วนที่จำเป็นต้องเพิ่มขึ้นมาเมื่อจะใช้งาน WashOut
และจะสังเกตุได้ว่า ส่วนสำคัญจะมีการกำหนด ดังรูปแบบนี้
ซึ่งจะเป็นการกำหนดชื่อ soap action และ รูปแบบ input output ต่างๆ เช่นข้างบน จะรับ ตัวแปร 4 ตัวsoap_action "create_news_order",:args => { :a => :boolean , :b => :boolean, :c => :boolean, :d => :boolean },:return => :string
เป็น ค่าความจริง เท่านั้น ทั้งหมด และ คืนค่าเป็น string กลับไป
นั้นเอง
และ จะมีส่วนสำคัญอีกส่วนคือ
เพื่อคืนค่า ใน รูปแบบ soap กลับไปให้ผู้ที่ร้องขอมาrender :soap => "create order success"
ในส่วนของ ฐานข้อมูลนั้น
Models
ในไฟล์ models/order.rb
class Order < ApplicationRecordbelongs_to :bill
def self.create_new(a,b,c,d,i)Order.create( :espresso => a,:cappuccino => b,:latte => c,:mocha => d,:bill_id => i )endend
เพื่อรองรับฟังก์ชั่น
Order.create_new(params[:a],params[:b],params[:c],params[:d],1)นั่นเอง
และในไฟล์
models/shop.rb
class Shop < ApplicationRecord
def self.create_new(name)
Shop.create( :name => name )
end
end
ฟังก์ชั่น พวกนี้เป็นฟังก์ชั่น สำหรับทดลอง การสร้าง ร้านค้าใหม่ เพิ่มเข้าไปใน ฐานข้อมูล และดึงข้อมูลชื่อร้านค้าออกมา
และเมื่อทุกอย่างเสร็จแล้ว
พิม
rails server
บน Promtps
เพื่อทำการเปิดเซิฟเวอร์รอให้บริการ
ผลลัพธ์ในส่วน wsdl จะได้ผลลัพธ์ ประมาณนี้
ในส่วนของ Client นั้น จะใช้งาน
สำหรับ ruby เพื่อใช้งานโปรโตคอล soaprequire 'savon'
โดย เปลี่ยน ข้างในเป็น link ที่อยู่ของ wsdl
client = Savon::Client.new(wsdl: "link ??")
และทำการ
เรียกใช้ soap action ดังนี้ได้เลยresult2 = client.call(:create_news_shop, message: {:name => 'rocket'})
ก็เป็นอันเสร็จแล้วสำหรับ ขั้น ตอนที่ 3 เตรียม ฐานต่างๆ ขั้นตอนต่อไปจะเป็นการเพิ่ม ฟังก์ชั่นให้เรียกใช้งานได้หลากหลายขึ้น
ไม่มีความคิดเห็น:
แสดงความคิดเห็น