วันพุธที่ 10 ตุลาคม พ.ศ. 2561

Tutorial 3 : เริ่มสร้าง App การเพิ่ม Model controller , route

เริ่มจากการเปิดโปรเจค งานก่อน

พิม

rails new appName
เพื่อทำการสร้าง โปรเจ็ค แบบอัตโนมัติขึ้นมาก่อน


และในการที่  เราจะทำ soap application นั้น เราจะใช้ gem wash_out

https://github.com/inossidabile/wash_out

ให้เข้าไปที่

....\appName\Gemfile

ทำการเพิ่ม

 gem 'wash_out'

แล้วเซฟ

แล้วทำการใช้งาน

bundle install

เพื่อโหลด wash_out มาใช้งาน

ทำการสร้างโมเดลใน Ruby On Rails 




ทำการสร้างโมเดล 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 do
wash_out :rumbas
end

โดยที่ AppName ดูได้ที่ไฟล์ application.rb (แล้วแต่การใช้งาน)

และ service ใน แถว wash_out :service 

นั้น คือ ชื่อไฟล์ Controller


Controller

ซึ่งในโฟล์เดอร์

...\appName\app\controllers

สร้างไฟล์ ใหม่ชื่อ service_controller.rb และมีโค้ดดังนี้
class ServiceController < ApplicationController
soap_service namespace: 'urn:WashOut'

soap_action "get_shop_name_by_id",
:args => { :id => :integer},
:return => :string
def get_shop_name_by_id
render :soap => ((Shop.find(params[:id]))[:name])
end

soap_action "create_news_shop",
:args => { :name => :string},
:return => :string
def create_news_shop
Shop.create_new(params[:name])
render :soap => "create news shop success"
end
soap_action "create_news_order",
:args => { :a => :boolean , :b => :boolean, :c => :boolean, :d => :boolean },
:return => :string
def create_news_order
Order.create_new(params[:a],params[:b],params[:c],params[:d],1)
render :soap => "create order success"
end
end

โดย
soap_service namespace: 'urn:WashOut'

เป็น ส่วนที่จำเป็นต้องเพิ่มขึ้นมาเมื่อจะใช้งาน WashOut

และจะสังเกตุได้ว่า ส่วนสำคัญจะมีการกำหนด ดังรูปแบบนี้

soap_action "create_news_order",
:args => { :a => :boolean , :b => :boolean, :c => :boolean, :d => :boolean },
:return => :string
ซึ่งจะเป็นการกำหนดชื่อ soap action และ รูปแบบ input output ต่างๆ เช่นข้างบน จะรับ ตัวแปร 4 ตัว
เป็น ค่าความจริง เท่านั้น ทั้งหมด และ คืนค่าเป็น string กลับไป

นั้นเอง

และ จะมีส่วนสำคัญอีกส่วนคือ

render :soap => "create order success"
เพื่อคืนค่า ใน รูปแบบ soap กลับไปให้ผู้ที่ร้องขอมา

ในส่วนของ ฐานข้อมูลนั้น

Models

ในไฟล์ models/order.rb
class Order < ApplicationRecord
belongs_to :bill

def self.create_new(a,b,c,d,i)
Order.create( :espresso => a,:cappuccino => b,:latte => c,:mocha => d,:bill_id => i )
end
end

เพื่อรองรับฟังก์ชั่น

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 นั้น จะใช้งาน
require 'savon'
สำหรับ ruby เพื่อใช้งานโปรโตคอล soap

client = Savon::Client.new(wsdl: "link ??")
โดย เปลี่ยน ข้างในเป็น link ที่อยู่ของ wsdl

และทำการ

result2 = client.call(:create_news_shop, message: {:name => 'rocket'})
เรียกใช้ soap action ดังนี้ได้เลย

ก็เป็นอันเสร็จแล้วสำหรับ ขั้น ตอนที่ 3 เตรียม ฐานต่างๆ ขั้นตอนต่อไปจะเป็นการเพิ่ม ฟังก์ชั่นให้เรียกใช้งานได้หลากหลายขึ้น

ไม่มีความคิดเห็น:

แสดงความคิดเห็น