ตอนที่ Flutter อัพเดตเป็นเวอร์ชั่น 2.0 เป็นต้นมา การใช้แค่ URL address เป็น parameter ดิบๆ ก็เริ่มหายไป กลายเป็นการใช้สิ่งที่เรียกว่า URI แทน
ซึ่งสำหรับหลายๆ คนที่ยังใหม่ต่อการเขียนแอพ เขียนโค้ด ก็อาจจะช็อคไปเลย ว่า URI คืออะไร? ต่างจาก URL ยังไง?
URI คืออะไร เกิดขึ้นมาทำไม? ขอสั้นๆ
เริ่มจากชื่อเต็มก่อน นั่นคือ URI ย่อมาจาก Uniform Resource Identifier
เอาเป็นว่าทุกสิ่งรอบตัวเรานั้นมีชื่อเรียก หรือมีที่อยู่ใช่ไหม? เช่น
- ที่อยู่ไปรษณีย์ ที่สามารถทำให้คนส่งของหาบ้านของเราเจอ
- หรือแม้แต่เบอร์โทรศัพท์ก็คือหมายเลขชุดหนึ่ง ที่ทำให้เราติดต่อคนๆ หนึ่ง หรือบริษัทๆ หนึ่งได้
- เลขประจำตัวประชาชน ที่ทำให้เราระบุตัวตนของคนๆ หนึ่งได้
URI คือรูปแบบของกลุ่มตัวอักษร ตัวเลข หรือข้อความ ที่สร้างขึ้นมาเพื่อระบุที่อยู่ของสิ่งๆ หนึ่ง ทั้งแบบในโลกจริง หรือเรา หรือโลกดิจิตอล เช่นที่อยู่ของ server หรือ website
แต่มันก็ไม่ใช่อะไรที่ต้องหมายถึงของบนเน็ตเสมอไปนะ อันนี้ควรรู้ไว้
และใช่ครับ URL คือรูปแบบหนึ่งของ URI นั่นเอง
แล้วทำไมในการเขียน Flutter เขาเริ่มเอา URI มาใช้แทนการกำหนดชื่อ URL ตรงๆ ล่ะ?
อย่างที่เราทำความเข้าใจกันข้างบนไปแล้วว่า การกำหนดชื่อ URL ในการทำงานของคำสั่งใน Flutter มันสามารถใช้ได้
แต่มันก็หมายความว่าเราจะใช้ประโยชน์แค่ ติดต่อ Web API เท่านั้นหรอ? ไม่ใช่แน่ๆ มันแคบไป
ดังนั้น หากเรากำหนดรูปแบบของ URL เป็น URI มันก็สามารถที่จะจัดการรูปแบบการเข้าถึงข้อมูลต่างๆ ได้เป็นมาตรฐานมากขึ้น และหลากหลายมากขึ้น เช่น การระบุประเภทของไฟล์เป็นต้น
เราจึงเห็นการที่ Flutter หรือ Package ต่างๆ ปรับมารับค่าเป็น URI มากขึ้นนั่นเอง
การสร้าง URI object โดยใช้ method ที่มี
ดังนั้นเพื่อให้ใช้งานได้ง่ายอยู่ ตัว class Uri ก็มี method ติดมาให้เพื่อให้เราสามารถเอา URL Address ของ Web API มาใช้ในรูปแบบของ URI ได้ง่ายครับ
โดยจะแยกออกเป็น 2 แบบ นั่นคือ
- Uri.http
- Uri.https
เดาไม่ยากเลยใช่ไหม ว่า 2 อันนี้แตกต่างกันยังไง? 😆
อันแรกใช้งาน URI สำหรับ URL ที่เป็น http protocal และอันที่สองสำหรับ https protocol ครับ
เช่นถ้าเราต้องระบุที่อยู่ของเว็บไซต์พล https://www.nextflow.in.th
เวลาสร้าง Uri ก็จะเป็นแบบด้านล่าง
// https://www.nextflow.in.th
var uri = Uri.https('nextflow.in.th', '');
หรือถ้าเกิดอยากส่ง request ไปที่เว็บคอร์สวิดีโอออนไลน์ Flutter ที่อยู่บน Website ของพล ก็จะมีการกำหนด parameter ตัวที่สอง เป็นชื่อ path ที่เกี่ยวข้องนั่นเอง
// https://nextflow.in.th/google-flutter-online
var uri = Uri.https('nextflow.in.th', '/google-flutter-online');
หรือในการค้นหาบทความที่พลสอนเรื่องการใช้งาน Flutter ปกติก็จะต้องใส่ query parameter เข้าไปด้านหลัง URL 2 ตัว นั่นก็คือ ?s=flutter&lang=thai
ก็จะกลายเป็นแบบด้านล่าง
// https://nextflow.in.th/?s=flutter&lang=thai
var uri = Uri.https('nextflow.in.th', '', { 's':'flutter', 'lang':'thai' } );
เท่านี้เราก็สามารถกำหนดที่อยู่ของ Resource บน Internet ของเรา ไม่ว่าจะเป็น Web API หรือของอื่นๆ ให้กับ Flutter ในการเอาไปใช้งานได้แล้วครับ
อ้างอิง – Flutter API, Whatis, Mozilla Developer Network