วันอาทิตย์ที่ 29 พฤศจิกายน พ.ศ. 2558

ws part 1 ลองมาเขียน RESTful web services

>> เบื่อเกมแพ้ก็ลองมาสร้าง ws เองบ้าง ทำความเข้าใจมันอยู่พักไม่ลงมือคงไม่ได้แล้ว ความเข้าใจจริงหรือจะเท่าลงมือทำเอง

>> ที่จะเอามาแชร์ก็เพราะผมไม่ค่อยเข้าใจพวก jar ไฟล์ซึ่งถือเป็นกลไกขับเครื่องสำคัญที่มากรุ่นต่างเวอร์ชันเสียจนอย่าได้ใช้ความจำกับพวกมันเลย โปรเจ็กค์ใหญ่ๆของจาวาเนี่ยเท่าที่เห็นมาก็มี jar อยู่รกรุงรัง ไม่ใช้ก็อยู่ใช้ก็อยู่ จะเอาออกก็กลัวมันพัง เอาล่ะเรามาลอง Hello World เจ้า RESTful web services กันนะ

>> เริ่มจากสร้างโปรเจ็กค์ที่เป็น Dynamic Web Project (อ้อ เครื่องผมจาวาเวอร์ชัน 8 นะครับ) แล้วก็ไปหาจาร์ (jar) ตามภาพประกอบนี้มาใส่ ณ WebContent/WEB-INF/lib


>> สำคัญเลยเป็นอะไรไม่รู้ มันบอกว่าหา org.jvnet.hk2.external.runtime.ServiceLocatorRuntimeBean ไม่เจอ ผมหาอยู่พักก็ไม่เจอ จึงต้องสร้าง package ออกมาเอง (แท็บสีเหลืองที่ป้ายในรูปไง) และตามไปโหลดคลาสเจ้ากรรมมาใส่ ลิงค์นี้เลย
http://grepcode.com/file/repo1.maven.org/maven2/net.maritimecloud.mms/mc-mms-server-standalone/0.3/org/jvnet/hk2/external/runtime/ServiceLocatorRuntimeBean.java

>> RESTful คือวิธีการหรือก็คือหลักการใช้เทคโนโลยีเพื่อให้บริการทรัพยากร (resource) จากเครื่องเซอร์เวอร์ (เครื่องให้บริการ) สู่เครื่องที่เรียกใช้บริการ (client) ผ่านเส้นทางของ HTTP protocol

>> ประโยชน์ข้อหนึ่งที่ผมชอบมันก็เพราะมันทำตัวเป็นคนกลาง (middle layer) ระหว่างฐานข้อมูลกับเว็บแอพพลิเคชันที่จะต้องพูดคุยกันว่าอยากจะใช้โน่นนี่นั่นโดยไม่ต้องเขียนโค้ดระดับติดต่อฐานข้อมูลเองซึ่งไม่ปลอดภัยนักหากมีผู้ขอใช้บริการที่ไม่สามารถควบคุมได้ ตัวอย่างเช่น คนซื้อปลา (client ใดๆ) อยากได้ปลาไม่ต้องไปจับปลาเองในบ่อเลี้ยงปลา (ฐานข้อมูล) จะมีคนไปจับมาให้หรือคอยจัดการคำขอนี้ให้ (เว็บเซอร์วิส) เฉือนเนื้อแบหนังพร้อมชั่งใส่ถุงยื่นให้กับมือ ขอแค่คนซื้อปลาบอกว่าจะเอากี่ขีดกี่กิโลกรัมก็พอ (ตามเอกสารที่เว็บเซอร์วิสประกาศหรือกำหนดไว้ว่าทำอะไรได้บ้าง) โดยตัวปลาก็คือ resource ที่คนจับปลานำมาให้

>> สำคัญคือ RESTful มุ่งที่ resource ไม่ใช่ข้อมูล แถมใช้ protocol ยอดนิยมอย่าง HTTP ลำเลียงมาส่ง แหม!ดุจสายพาน ตาม HTTP methods เลย
- GET คือ client ขอ resource จากเครื่องที่ให้บริการ
- PUT คือ client ขอปรับปรุง (update) resource นั่นๆที่เครื่องให้บริการ
- POST คือ client ขอสร้าง resource ขึ้นที่เครื่องให้บริการ
- DELETE คือ client ขอลบ resource นั้นๆที่เครื่องให้บริการ

>> กลับมาที่โปรเจ็กค์ อย่าลืม config เส้นทางที่จะมุ่งสู่คลาสที่เราต้องการกำหนดให้มันเป็น resource ในไฟล์ web.xml


>> ด้วยว่า resource หรือก็คือคลาส HelloWorldResource ได้ให้บริการ Get และเมื่อเรียกมาเฉยๆมันก็จะทำงานเมธอดชื่อ greet แล้วพ่น Hello World ออกไปจ้า


>> อ้อ สภาพแวดล้อมที่พัฒนา
- eclipse mars.1 release (4.5.1)
- jre 1.8.0_65
- สร้างด้วย dynamic web project (module version 3.0)
- implement ws นี้ด้วย jersey 2.0
- tomcat 8.0

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

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