โฮมเพจ » การเข้ารหัส » พื้นฐานของ REST และ RESTful API การพัฒนา

    พื้นฐานของ REST และ RESTful API การพัฒนา

    นักพัฒนาเว็บกำลังพูดถึงบ่อยครั้ง หลักการ REST และสถาปัตยกรรมข้อมูล RESTful, เนื่องจากเป็นส่วนสำคัญของการพัฒนาที่ทันสมัย ​​แต่บางครั้งมันอาจสร้างความสับสนอย่างไม่น่าเชื่อ ส่วนที่เหลือไม่ได้เป็นเทคโนโลยีในตัวเอง แต่ค่อนข้าง วิธีการสร้าง API ด้วยหลักการขององค์กร. หลักการเหล่านี้คือแนวทางในการพัฒนาและสร้างสภาพแวดล้อมที่เป็นสากลมากขึ้นสำหรับการประมวลผลคำขอ API.

    ในบทความนี้ฉันต้องการอธิบายวิธีการพัฒนาแบบสงบจากมุมมองแบบเบิร์ด ฉันต้องการที่จะเล่นงาน อะไร มากกว่า อย่างไร. แม้ว่าฉันจะสัมผัสได้ทั้งสองด้านโพสต์นี้ทำขึ้นสำหรับผู้ที่เข้าสู่การพัฒนาเว็บ แต่ก็ไม่สามารถเข้าใจแนวคิดของ REST API.

    REST สำหรับนักพัฒนาเว็บ

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

    REST เป็นเพียงชุดของ หลักเกณฑ์และรูปแบบสถาปัตยกรรมที่ใช้สำหรับการรับส่งข้อมูล. โดยทั่วไปจะใช้กับเว็บแอปพลิเคชัน แต่สามารถส่งผ่านข้อมูลไปยังซอฟต์แวร์ได้เช่นกัน.

    API ย่อมาจาก Application Programming Interface ซึ่งเป็นวิธีการ การเชื่อมต่อกับไลบรารีหรือแอปพลิเคชันอื่น ๆ. Windows มี API หลายตัวและ Twitter ก็มี API เว็บเช่นกันแม้ว่าพวกเขาจะทำงานที่แตกต่างกันโดยมีเป้าหมายที่แตกต่างกัน.

    เมื่อรวมเข้าด้วยกัน RESTful API จะเป็น API ที่ตามสถาปัตยกรรม REST.

    อะไรคือสถาปัตยกรรม REST?

    นี่คือที่มันยากที่จะวางเฉพาะ อย่างไรก็ตามมีค่าคงที่ทางสถาปัตยกรรมบางอย่างเช่น:

    • ความมั่นคง ทั่วทั้ง API
    • ชาติไร้สัญชาติ, กล่าวคือไม่มีเซสชันฝั่งเซิร์ฟเวอร์
    • การใช้ รหัสสถานะ HTTP ที่เหมาะสม
    • การใช้ จุดสิ้นสุด URL ด้วยลำดับชั้นตรรกะ
    • การกำหนดเวอร์ชันใน URL มากกว่าในส่วนหัว HTTP

    ไม่มีแนวทางเฉพาะเจาะจงมากเกินไปเช่นข้อกำหนด W3C HTML5 ซึ่งอาจนำไปสู่ความสับสนและความไม่แน่นอนเกี่ยวกับคำศัพท์ REST.

    นอกจากนี้รายการด้านบน ไม่ควรพิจารณากฎที่ยากและรวดเร็ว, แม้ว่ามันจะเป็นจริงของ RESTful API ที่ทันสมัยที่สุด.

    IMAGE: restful-api-design.readthedocs.io

    ส่วนที่เหลือคือ วิธีการที่มีน้ำหนักเบา ซึ่งทำให้มันสมบูรณ์แบบสำหรับข้อมูล HTTP นี่คือสาเหตุที่ REST ได้รับความนิยมมากในเว็บและทำไมจึงได้รับการยอมรับอย่างกว้างขวางว่าเป็นตัวเลือกที่ดีที่สุดสำหรับการพัฒนา API.

    ดังที่ Vinay Sahni วางไว้, “API คือ UI ของผู้พัฒนา.” ทุกสิ่งควรใช้งานง่ายและมอบประสบการณ์การใช้งานที่ยอดเยี่ยม RESTful APIs มุ่งมั่นที่จะทำเช่นนั้น.

    ประเด็นหลักสำหรับ RESTful API

    เคล็ดลับเหล่านี้อยู่ในบริบทของ API อย่างเคร่งครัดสำหรับการใช้งานเว็บ. ซึ่งหมายความว่า HTTP เป็นข้อกำหนด, และบ่อยครั้งหมายความว่า ข้อมูล API โฮสต์บนเซิร์ฟเวอร์ภายนอก. ตรวจสอบว่า RESTful API ทำงานอย่างไรกับผู้ใช้ API.

    ผู้ใช้ API เป็นนักพัฒนาเว็บที่สามารถสร้างสคริปต์ที่เชื่อมต่อกับเซิร์ฟเวอร์ API ภายนอกจากนั้นข้อมูลที่จำเป็นจะถูกส่งผ่าน HTTP ผู้พัฒนาสามารถแสดงข้อมูลบนเว็บไซต์ของพวกเขาได้ โดยไม่ต้องเข้าถึงส่วนบุคคลไปยังเซิร์ฟเวอร์ภายนอก (เช่นดึงข้อมูล Twitter).

    พูดโดยทั่วไปมี สี่คำสั่ง เคย เข้าถึง RESTful API:

    1. GET สำหรับการดึงวัตถุ
    2. โพสต์ สำหรับการสร้างวัตถุใหม่
    3. PUT สำหรับการแก้ไขหรือแทนที่วัตถุ
    4. ลบ สำหรับการลบวัตถุ

    แต่ละวิธีเหล่านี้ควรเป็น ส่งผ่านด้วยการเรียก API เพื่อบอกเซิร์ฟเวอร์ว่าต้องทำอย่างไร.

    API ส่วนใหญ่ของเว็บ อนุญาตเท่านั้น GET การร้องขอ เพื่อดึงข้อมูลออกจากเซิร์ฟเวอร์ภายนอก การตรวจสอบความถูกต้องเป็นทางเลือก แต่เป็นความคิดที่ดีเมื่ออนุญาตให้ใช้คำสั่งที่อาจสร้างความเสียหายเช่น PUT หรือ ลบ.

    อย่างไรก็ตาม RESTful APIs ไม่มากนักแม้แต่จะไปได้ไกลขนาดนี้ พิจารณาPokéapiซึ่งเป็นฐานข้อมูลPokémon API ฟรี เปิดให้บุคคลทั่วไปได้รับการ จำกัด อัตราที่เหมาะสม (จำกัด ผู้ใช้สำหรับคำขอ API จำนวนหนึ่งในช่วงระยะเวลาหนึ่ง) แต่อนุญาตเฉพาะ GET วิธีการในการเข้าถึงทรัพยากร สิ่งนี้อาจเรียกว่า API การบริโภคเท่านั้น.

    ส่งคืนชนิด ก็มีความสำคัญเช่นกันและควร รักษาความเป็นเนื้อเดียวกัน สำหรับทรัพยากรทั้งหมด JSON เป็นประเภทผลตอบแทนยอดนิยมพร้อมรายละเอียดออนไลน์ที่อธิบายโครงสร้างข้อมูลที่เหมาะสม.

    RESTful API ใช้ คำนามสำหรับวัตถุ API, และ คำกริยาสำหรับการดำเนินการ บนวัตถุเหล่านั้น การรับรองความถูกต้องอาจเป็นส่วนหนึ่งของสิ่งนี้การ จำกัด อัตราอาจเป็นส่วนหนึ่งของสิ่งนี้ แต่ API ที่ง่ายมากสามารถทำได้โดยไม่ต้องกังวลกับข้อ จำกัด ของผู้ใช้.

    การเข้าถึงทรัพยากร API

    โดยทั่วไปแล้ว APIs สาธารณะ สามารถเข้าถึงได้จากที่อยู่เว็บไซต์โดยตรง. ซึ่งหมายความว่า โครงสร้าง URL มีความสำคัญ, และควรใช้สำหรับคำขอ API เท่านั้น.

    URL บางรายการอาจมีไดเรกทอรีคำนำหน้าเช่น / v2 / สำหรับ API เวอร์ชันก่อนหน้า 2 ที่ได้รับการอัพเดต นี่เป็นเรื่องปกติสำหรับนักพัฒนาที่ไม่ต้องการคิดค่าเสื่อมราคา 1.x API แต่ยังต้องการเสนอโครงสร้างใหม่ล่าสุด.

    ฉันชอบโพสต์นี้ครอบคลุม โครงสร้าง URL พื้นฐาน และตัวอย่างจากบริการอื่น ๆ.

    โปรดทราบว่าจุดสิ้นสุดของ ข้อมูลที่ส่งคืนจะมีการเปลี่ยนแปลง ขึ้นอยู่กับ วิธี HTTP. ตัวอย่างเช่น, GET ดึงเนื้อหาในขณะที่ โพสต์ สร้างเนื้อหาใหม่ คำขออาจชี้ไปที่ปลายทางเดียวกัน แต่ผลลัพธ์อาจแตกต่างกันมาก.

    IMAGE: เอกสาร Reddit API

    การดูตัวอย่างออนไลน์อาจช่วยให้คุณเข้าใจแนวคิดที่ชัดเจนมากขึ้น เราได้เห็น Pokeapi แล้ว แต่นี่คือบางส่วน ตัวอย่าง API ของโลกแห่งความจริง เพื่ออ่าน:

    • Reddit API
    • GitHub API
    • Flickr API
    • Pinterest API

    สร้าง API ของคุณเอง

    กระบวนการสร้าง API ของคุณเองนั้นไม่ควรทำอย่างเบาบาง แต่ก็ไม่ซับซ้อนเท่าที่คุณคิด มันใช้เวลา ความเข้าใจเกี่ยวกับรูปแบบการออกแบบ API และแนวทางปฏิบัติที่ดีที่สุด เพื่อสร้างสิ่งที่มีคุณค่าจริง.

    API แต่ละอันจะต้อง เชื่อมต่อกับเซิร์ฟเวอร์ของคุณ เพื่อส่งคืนข้อมูลบางชนิด คุณไม่เพียง แต่ต้องเขียนโค้ดเพื่อทำเช่นนั้น แต่คุณต้องจัดรูปแบบข้อมูลส่งคืนด้วย ข้อกำหนดที่เป็นไปได้อื่น ๆ ได้แก่ การรับรอง และ การ จำกัด อัตรา, ดังนั้นการสร้าง API จึงไม่ใช่เรื่องง่าย.

    แต่ลองมาดูกัน หลักการพื้นฐานบางประการ ของสถาปัตยกรรม API.

    สร้างจุดสิ้นสุด

    แง่มุมหนึ่งของการพัฒนา API คือ จุดสิ้นสุดการสร้าง. เมื่อ การสร้างทรัพยากร คุณต้องการใช้คำนามไม่ใช่คำกริยา ซึ่งหมายความว่าข้อมูล API ควรส่งคืนบุคคลสถานที่หรือสิ่งของซึ่งส่วนใหญ่เป็นข้อมูล สิ่งที่มีคุณลักษณะเฉพาะ (เช่นทวีตและข้อมูลเมตาทั้งหมด).

    มันอาจเป็นการยากที่จะเรียนรู้ที่จะตั้งชื่อคำนาม แต่นี่เป็นส่วนสำคัญของการพัฒนา API การทำให้เข้าใจง่ายดีที่สุดเมื่อใดก็ตามที่เป็นไปได้.

    การอภิปรายใหญ่คือ เอกพจน์กับพหูพจน์ คำนาม หากคุณสร้าง Twitter API คุณอาจมีกลุ่มวัตถุเป็นอันดับแรก (เช่นทวีต) ดังนั้นรายการวัตถุที่สอง (เช่นทวีต ID).

     $ / tweet / 15032934882934 $ / tweets / 15032934882934 

    ในกรณีนี้ฉันจะโต้แย้งรูปแบบเอกพจน์ที่ดูดีกว่า สิ่งนี้เป็นจริงโดยเฉพาะอย่างยิ่งเมื่อมีการส่งคืนทรัพยากรเดียวเท่านั้น แต่ไม่มีคำตอบที่ถูกต้อง 100% ไว้ในเอกสารดังนั้นให้ทำสิ่งที่เหมาะสมที่สุดสำหรับโครงการของคุณ.

    ตั้งค่าประเภทการคืนสินค้า

    การพิจารณาก็คือ ส่งคืนข้อมูลประเภท. ผู้ใช้เว็บส่วนใหญ่คาดหวังเนื้อหา JSON ดังนั้นจึงเป็นตัวเลือกที่ดีที่สุด XML เป็นอีกทางเลือกหนึ่งหากคุณต้องการให้ทั้งคู่ อย่างไรก็ตาม JSON เป็นประเภทการส่งคืน API พื้นฐานในหมู่นักพัฒนาเว็บ.

    มีอีกมากมายที่จะนำไปสู่การพัฒนา API ดังนั้นฉันขอแนะนำให้เล่นกับ API ก่อน วิธีนี้คุณจะเห็นว่านักพัฒนาซอฟต์แวร์คนอื่นสร้าง API ของพวกเขาอย่างไรและหวังว่าคุณจะคุ้นเคยกับข้อกำหนดทั่วไป.

    หากคุณเพิ่งเริ่มต้นโปรดพิจารณา skimming dev ของบทเรียนเหล่านี้:

    • ไซต์บทแนะนำ REST API
    • เขียน Simple REST API
    • สร้างบริการเว็บสงบ

    แหล่งข้อมูลเพิ่มเติม

    วิธีที่ดีที่สุดในการเรียนรู้การพัฒนาเว็บแอปคือการฝึกฝน ทฤษฎีที่ได้รับนั้นคุ้มค่าที่จะศึกษาอยู่เสมอเพราะจะช่วยให้คุณสามารถสนทนากับผู้พัฒนาและเข้าใจว่าสิ่งต่าง ๆ ทำงานอย่างไร.

    แต่จุดเริ่มต้นที่ดีสำหรับการพัฒนา API คือ กำลังเชื่อมต่อกับ API อื่น ๆ เป็นครั้งแรก เรียนรู้พื้นฐานของการเชื่อมต่อฝั่งไคลเอ็นต์และจากนั้นคุณสามารถย้ายไปสู่การพัฒนา API ฝั่งเซิร์ฟเวอร์โดยสร้าง API ของคุณเองตั้งแต่เริ่มต้น.

    หากเป็นเป้าหมายของคุณโปรดพิจารณาแหล่งข้อมูลต่อไปนี้เพื่อช่วยในการเดินทางของคุณ.

    หนังสือ

    • REST API Design Rulebook
    • RESTful Web APIs
    • RESTful Web Services Cookbook
    • REST ที่ไม่ถูกรบกวน: คู่มือสำหรับการออกแบบ API ที่สมบูรณ์แบบ

    บทความ

    • คู่มือการเริ่มต้นของ HTTP และ REST
    • การสร้าง RESTful API
    • คู่มือการตั้งชื่อทรัพยากรสงบ
    • การสร้าง REST API โดยใช้ MEAN Stack