วันก่อนโค้ชพลรีวิว Mockaroo เว็บแอพพลิเคชั่นสุ่มข้อมูลหลากหลายรูปแบบไปแล้ว ครั้งนี้มาสำหรับคนที่ต้องการสร้างเว็บแอพ โมบายล์แอพ และอยากหาข้อมูลแนว “ผู้ใช้” มาแสดงในแอพ โค้ชพลเอา Web API ตัวนี้มาฝาก
RandomUser.me: Web API สุ่มข้อมูลผู้ใช้ง๊ายง่าย
เนื่องจากการที่จะหาข้อมูลมาใช้กับแอพพลิเคชั่นเป็นความท้าทายของนักพัฒนาทุกคน โดยเฉพาะในขั้นตอนการพัฒนาช่วงต้นๆ เราอาจจะไม่สามารถหาข้อมูลจำนวนมากมาทดสอบได้
โดยเฉพาะข้อมูลของผู้ใช้ ในแอพพลิเคชั่นที่ทำงานกับการจัดการข้อมูลจำพวกนี้เป็นหลัก อย่างพวก Social Network หรือเกี่ยวกับ User Profile ต่างๆ
ซึ่งเหมือนๆ กับ Keith Armstrong และ Arron Hunt ทั้ง 2 คนได้ช่วยกันสร้าง Web API สำหรับสุ่มข้อมูลผู้ใช้จำนวนมากสำหรับ Client ที่ต้องการข้อมูลไปใช้งาน
โดยข้อมูลเหล่านี้มาจากเพื่อนๆ ของ Keith ในตอนแรก แต่ช่วงหลังๆ ก็ได้มีนักพัฒนาส่งข้อมูลเข้ามาร่วมโครงการนี้มากมายครับ
รีวิวการใช้งาน Web API
สำหรับ RandomUser.me เป็น Web API ที่รับส่งข้อมูลแบบ JSON และรองรับ GET Request แบบเดียว
ดังนั้นวิธีการส่ง Request ไปขอข้อมูลผู้ใช้แบบสุ่มจาก Web API ก็สามารถทำได้ตามรูปแบบปกติทั่วไป เช่น
วิธีส่ง Request ใน Angular หรือ Ionic
$http.get('https://randomuser.me/api/') .success(function(result){ // นำไปใช้งาน })
ศึกษาเรียนรู้เรื่อง Angular และ Ionic เพิ่มเติมได้ที่นี่
วิธีส่ง Request ใน Xamarin (C#.NET)
public async Task<IList<UserProfile>> GetUserAsync() { var url = new Uri ("", string.Empty); var response = await SendRequestAsync<UserProfile[]>( url, HttpMethod.Get, _headers); return response }
ศึกษาเรียนรู้เรื่อง Xamarin เพิ่มเติมได้ที่นี่
รูปแบบข้อมูล และโครงสร้างของ JSON
โครงสร้างของ JSON ที่ส่งกลับมาจาก Web API ประกอบไปด้วยข้อมูลดังนี้ครับ
- เพศ
- คำนำหน้า, ชื่อ, นามสกุล
- ที่อยู่
- อีเมลล์
- ข้อมูลบัญชีผู้ใช้งาน (เช่น Username และรหัสผ่าน)
- เบอร์โทรศัพท์บ้าน และมือถือ
- รูปภาพขนาดใหญ่, กลาง, และ Thumbnail
{ "results": [ { "gender": male", "name": { "title": mr", "first": samuel", "last": ross" }, "location": { "street": 5592 pockrus page rd", "city": santa ana", "state": oregon", "postcode": 69974 }, "email": [email protected]", "login": { "username": silverwolf434", "password": blackjac", "salt": d14iEZQT", "md5": 261a57061d35918f5c3ef7f90f4f2a80", "sha1": c330ad8c974ab9982622d5d5506cfed4886a79ab", "sha256": 8ca4a1ca48975a69bd829de61298cd6a950dede740d4c0e755d07ee4cfc06fa5" }, "registered": 1155461743, "dob": 1078494582, "phone": (179)-102-8139", "cell": (107)-396-0688", "id": { "name": SSN", "value": 476-30-9095" }, "picture": { "large": https://randomuser.me/api/portraits/men/80.jpg", "medium": https://randomuser.me/api/portraits/med/men/80.jpg", "thumbnail": https://randomuser.me/api/portraits/thumb/men/80.jpg" }, "nat": US" } ], "info": { "seed": 705567e86a824a27", "results": 1, "page": 1, "version": 1.0" } }
วิธีปรับแต่งข้อมูลแบบต่างๆ
ซึ่งนอกจากการส่งข้อมูลแบบสุ่มปกติ เรายังสามารถปรับแต่งข้อมูลที่ส่งกลับมาหาเราได้ด้วย ผ่านรูปแบบของ Query String
กำหนด Format ของข้อมูล
นอกจาก JSON แล้ว เรายังสามารถเรียกข้อมูลในรูปแบบอื่นได้ดังนี้
- pretty (PrettyJSON)
- CSV
- YAML
- XML
http://api.randomuser.me/?format=xml
กำหนดจำนวนของข้อมูล
โดยปกติ Web API จะส่งข้อมูลกลับมาแต่ 1 คนเท่านั้น แต่ถ้าเราต้องการเราสามารถกำหนดจำนวนข้อมูลที่ส่งกลับมาได้ด้วย
// ส่งกลับมา 5,000 คน (โหดมาก) http://api.randomuser.me/?results=5000
กำหนดประเภทของข้อมูลที่ต้องการ
ในกรณีที่เราไม่ต้องการข้อมูลจัดเต็มแบบที่เห็นด้านบน เราสามารถขอเฉพาะบางส่วนได้ โดยข้อมูลที่ขอสามารถกำหนดได้ด้วย โดยมีดังนี้
- gender
- name
- location
- login
- registered
- dob
- phone
- cell
- id
- picture
- nat
เช่นถ้าเราต้องการเฉพาะ ชื่อ, เบอร์โทรมือถือ, และรูปภาพ ก็สามารถใช้ URL ดังนี้
http://api.randomuser.me/?inc=name,phone,picture
หรือถ้าต้องการทั้งหมด แต่ไม่เอา ข้อมูลบัญชีผู้ใช้ก็คือ
http://api.randomuser.me/?exc=login
สรุปรีวิวการใช้ UserRandom.me
ความแตกต่างระหว่าง UserRandom.me กับ Mockaroo ในการสร้างข้อมูลจำลองนั้น ชัดเจนที่สุดคงเป็นที่ UserRandom.me นั้น เน้นข้อมูลของบุคคลเป็นหลัก ซึ่งสามารถเรียกใช้ได้ในทันที
แต่ Mockaroo จะต้องให้เราทำการแก้ไขโครงสร้างของข้อมูลก่อน แล้วถึงนำไปใช้งานกับ Client ที่เป็น Web App หรือ Mobile App ของเราได้ อีกอย่างคือเราไม่สามารถเรียกข้อมูลได้จาก Web API ตรงๆ แต่ต้องโหลดข้อมูลมาก่อนเท่านั้น
โดยรวมทั้ง 2 เจ้าสามารถสร้างข้อมูลจำลองจำนวนมากได้ในเวลาอันรวดเร็ว จึงทำให้ผมประหยัดเวลาได้มาก ในการนำข้อมูลมาทดลองกับ Mobile App ในช่วงทดสอบการทำงาน ทั้งที่สร้างจาก Ionic และ Xamarin
หวังว่าจะทำให้พวกเราประหยัดเวลาได้มากขึ้นอีกนะครับ
อ้างอิง – RandomUser.me