ในโลกของการพัฒนาซอฟต์แวร์ที่ทันสมัย APIs Restful ได้กลายเป็นรากฐานที่สำคัญสำหรับการสร้างแอพพลิเคชั่นที่ปรับขนาดได้มีประสิทธิภาพและทำงานร่วมกันได้ ในฐานะซัพพลายเออร์ APIS ฉันได้เห็นพลังการเปลี่ยนแปลงของ APIs ที่มีการเปลี่ยนแปลงอย่างดีในการเปิดใช้งานการสื่อสารที่ราบรื่นระหว่างระบบซอฟต์แวร์ที่แตกต่างกัน ในบล็อกนี้ฉันจะแบ่งปันข้อมูลเชิงลึกเกี่ยวกับวิธีการสร้าง REST API จากแนวคิดพื้นฐานไปจนถึงขั้นตอนการใช้งานจริง
ทำความเข้าใจกับสถาปัตยกรรมที่สงบสุข
ก่อนที่จะดำน้ำในกระบวนการสร้างมันเป็นสิ่งสำคัญที่จะต้องเข้าใจสิ่งที่ REST (การถ่ายโอนสถานะการเป็นตัวแทน) คือ REST เป็นรูปแบบสถาปัตยกรรมที่กำหนดชุดของข้อ จำกัด ที่จะใช้สำหรับการสร้างบริการเว็บ API ที่อยู่อาศัยตามข้อ จำกัด เหล่านี้ซึ่งรวมถึงการไร้สัญชาติ, ความสามารถในการส่งสัญญาณ, อินเทอร์เฟซแบบสม่ำเสมอ, ระบบเลเยอร์และรหัส - เปิด - ความต้องการ (ไม่บังคับ)
ข้อ จำกัด อินเทอร์เฟซแบบสม่ำเสมอมีความสำคัญอย่างยิ่ง หมายความว่า API ควรมีวิธีที่สอดคล้องกันในการโต้ตอบกับทรัพยากร ทรัพยากรเป็นสิ่งที่สำคัญในการพักผ่อนและพวกเขาสามารถเป็นอะไรก็ได้ตั้งแต่โปรไฟล์ผู้ใช้ไปจนถึงแคตตาล็อกผลิตภัณฑ์ แต่ละทรัพยากรจะถูกระบุโดย URI ที่ไม่ซ้ำกัน (ตัวระบุทรัพยากรที่เหมือนกัน) และลูกค้าโต้ตอบกับทรัพยากรเหล่านี้โดยใช้วิธี HTTP มาตรฐานเช่น Get, Post, Put, DELETE
วางแผน API ที่เหลือของคุณ
ขั้นตอนแรกในการสร้าง REST API คือการวางแผน สิ่งนี้เกี่ยวข้องกับการกำหนดทรัพยากร API ของคุณจะเปิดเผยการดำเนินการที่สามารถดำเนินการกับทรัพยากรเหล่านั้นและรูปแบบข้อมูลที่จะใช้สำหรับการร้องขอและการตอบกลับ
การกำหนดทรัพยากร
เริ่มต้นด้วยการระบุเอนทิตีหลักในระบบของคุณที่คุณต้องการเปิดเผยผ่าน API ตัวอย่างเช่นหากคุณกำลังสร้าง E - Commerce API ทรัพยากรของคุณอาจรวมถึงผลิตภัณฑ์ลูกค้าและคำสั่งซื้อ แต่ละทรัพยากรควรมีชื่อที่ชัดเจนและมีความหมายและ URI ควรสะท้อนความสัมพันธ์แบบลำดับชั้นกับทรัพยากรอื่น ๆ ตัวอย่างเช่น URI สำหรับผลิตภัณฑ์เฉพาะอาจเป็น/ผลิตภัณฑ์/{product_id}, ที่ไหน{product_id}เป็นตัวระบุที่ไม่ซ้ำกันสำหรับผลิตภัณฑ์
การพิจารณาการดำเนินงาน
เมื่อคุณกำหนดทรัพยากรแล้วคุณต้องตัดสินใจว่าจะดำเนินการใดบ้าง นี่คือการทำแผนที่ทั่วไปของวิธีการ HTTP ในการดำเนินการ:
- รับ: ดึงทรัพยากรหรือการรวบรวมทรัพยากร ตัวอย่างเช่น,
รับ /ผลิตภัณฑ์สามารถส่งคืนรายการผลิตภัณฑ์ทั้งหมดในขณะที่รับ /ผลิตภัณฑ์ /{product_id}จะส่งคืนรายละเอียดของผลิตภัณฑ์เฉพาะ - โพสต์: สร้างทรัพยากรใหม่ ตัวอย่างเช่น,
โพสต์ /ผลิตภัณฑ์ด้วยเพย์โหลด JSON ที่มีรายละเอียดผลิตภัณฑ์จะสร้างผลิตภัณฑ์ใหม่ในระบบ - ใส่: อัปเดตทรัพยากรที่มีอยู่
put /products /{product_id}ด้วยรายละเอียดผลิตภัณฑ์ที่อัปเดตในเพย์โหลดจะเขียนทับข้อมูลผลิตภัณฑ์ที่มีอยู่ - ลบ: ลบทรัพยากร
ลบ /ผลิตภัณฑ์ /{product_id}จะลบผลิตภัณฑ์ที่ระบุออกจากระบบ
การเลือกรูปแบบข้อมูล
JSON (Notation Object JavaScript) เป็นรูปแบบข้อมูลที่ใช้กันมากที่สุดสำหรับ REST APIs เนื่องจากความเรียบง่ายและการสนับสนุนที่กว้างในภาษาการเขียนโปรแกรมที่แตกต่างกัน XML เป็นอีกทางเลือกหนึ่ง แต่มันก็ยิ่งใหญ่กว่า เมื่อออกแบบ API ของคุณตัดสินใจเกี่ยวกับรูปแบบข้อมูลที่คุณจะใช้สำหรับคำขอและการตอบกลับและจัดทำเอกสารอย่างชัดเจน
การออกแบบจุดสิ้นสุด API
หลังจากวางแผนแล้วก็ถึงเวลาที่จะออกแบบจุดสิ้นสุด API จุดสิ้นสุดคือ URI เฉพาะที่ลูกค้าสามารถเข้าถึงเพื่อดำเนินการกับทรัพยากร
การตั้งชื่อการประชุม
ใช้คำนามพหูพจน์สำหรับชื่อทรัพยากรใน uris ของคุณ ตัวอย่างเช่น,/สินค้าแทน/ผลิตภัณฑ์- สิ่งนี้ทำให้ชัดเจนว่าจุดสิ้นสุดแสดงถึงการรวบรวมทรัพยากร นอกจากนี้ใช้ยัติภังค์เพื่อแยกคำใน URIs เพื่อการอ่านที่ดีกว่ามากกว่าขีดเส้นใต้หรืออูฐ
พารามิเตอร์การสืบค้น
สำหรับการกรองการเรียงลำดับและการแบ่งหน้าใช้พารามิเตอร์การสืบค้น ตัวอย่างเช่นในการรับรายการผลิตภัณฑ์ที่จัดเรียงตามราคาตามลำดับจากน้อยไปมากคุณสามารถใช้ URI/ผลิตภัณฑ์? sort = price & order = asc- ในการใช้การปนเปื้อนคุณอาจใช้พารามิเตอร์เช่นจำกัดและชดเชย, เช่น/ผลิตภัณฑ์? Limit = 10 & Offset = 20เพื่อรับหน้าสามของ 10 ผลิตภัณฑ์แต่ละรายการ


การใช้ส่วนที่เหลือ API
มีภาษาการเขียนโปรแกรมและเฟรมเวิร์กมากมายสำหรับการใช้งาน REST API ที่นี่ฉันจะใช้ Python และ Flask Framework เป็นตัวอย่าง
จาก Flask Import Flask, jsonify, ขอแอป = flask (__ name__) # ข้อมูลจำลองสำหรับผลิตภัณฑ์ผลิตภัณฑ์ = [{"id": 1, "ชื่อ": "ผลิตภัณฑ์ 1", "ราคา": 10.99}, {"id": 2, "ชื่อ": "ผลิตภัณฑ์ 2", "ราคา": 19.99} get_products (): return jsonify (ผลิตภัณฑ์) # รับผลิตภัณฑ์เดียว @app.route ('/ผลิตภัณฑ์/<int: product_id>', method = ['get') def get_product (product_id): ผลิตภัณฑ์ = next (p สำหรับ p ในผลิตภัณฑ์ถ้า p ["id" 404 # สร้างผลิตภัณฑ์ใหม่ @app.route ('/products', method = ['post']) def create_product (): new_product = request.get_json () new_product ["id"] = len (ผลิตภัณฑ์) + 1 products.append (new_product) methods = ['put']) def update_product (product_id): product = next ((p สำหรับ p ในผลิตภัณฑ์ถ้า p ["id"] == product_id), ไม่มี) ถ้าผลิตภัณฑ์: updated_data = request.get_json () ผลิตภัณฑ์ที่ไม่ได้รับผลตอบแทน @app.route ('/ผลิตภัณฑ์/<int: product_id>', methods = ['delete']) def delete_product (product_id): ผลิตภัณฑ์ผลิตภัณฑ์ทั่วโลก = [p สำหรับ p ในผลิตภัณฑ์ถ้า p ["id"]!
ในตัวอย่างนี้เราได้สร้าง REST API อย่างง่ายสำหรับการจัดการผลิตภัณฑ์ API มีจุดสิ้นสุดสำหรับการรับผลิตภัณฑ์ทั้งหมดรับผลิตภัณฑ์เดียวสร้างผลิตภัณฑ์ใหม่อัปเดตผลิตภัณฑ์ที่มีอยู่และการลบผลิตภัณฑ์
การจัดการข้อผิดพลาดและการตรวจสอบ
REST API ที่แข็งแกร่งควรจัดการกับข้อผิดพลาดอย่างสง่างามและให้ข้อความแสดงข้อผิดพลาดที่มีความหมายแก่ลูกค้า เมื่อเกิดข้อผิดพลาดให้ส่งคืนรหัสสถานะ HTTP ที่เหมาะสมพร้อมกับวัตถุ JSON ที่มีข้อความแสดงข้อผิดพลาด ตัวอย่างเช่นหากไคลเอนต์พยายามเข้าถึงทรัพยากรที่ไม่มีอยู่ให้ส่งคืนรหัสสถานะ 404 ด้วยข้อความเช่น "ไม่พบทรัพยากร"
การตรวจสอบความถูกต้องก็มีความสำคัญเช่นกัน ก่อนที่จะดำเนินการใด ๆ เกี่ยวกับข้อมูลที่ได้รับจากลูกค้าให้ตรวจสอบเพื่อให้แน่ใจว่าเป็นไปตามข้อกำหนด ตัวอย่างเช่นหากราคาผลิตภัณฑ์คาดว่าจะเป็นจำนวนบวกให้ตรวจสอบว่ามูลค่าที่ได้รับในคำขอเป็นจำนวนบวก
ข้อควรพิจารณาด้านความปลอดภัย
ความปลอดภัยเป็นสิ่งสำคัญที่สุดเมื่อสร้าง REST API นี่คือมาตรการด้านความปลอดภัยที่คุณควรพิจารณา:
การรับรองความถูกต้อง
ใช้กลไกการรับรองความถูกต้องเช่นคีย์ API, OAuth หรือ JWT (โทเค็นเว็บ JSON) เพื่อให้แน่ใจว่าลูกค้าที่ได้รับอนุญาตเท่านั้นสามารถเข้าถึง API ของคุณได้ คีย์ API นั้นใช้งานง่าย แต่อาจไม่ปลอดภัยเท่ากับ OAuth หรือ JWT OAuth เป็นโปรโตคอลที่ใช้กันอย่างแพร่หลายสำหรับการเข้าถึงที่ได้รับมอบหมายในขณะที่ JWT เป็นโทเค็นที่มีอยู่ในตัวเองที่สามารถใช้ในการรับรองความถูกต้องและอนุญาตคำขอ
การอนุญาต
เมื่อลูกค้าได้รับการรับรองความถูกต้องแล้วคุณต้องกำหนดว่าการกระทำใดที่พวกเขาจะได้รับอนุญาตให้ดำเนินการ นี่คือที่เข้ามาตัวอย่างเช่นผู้ใช้ทั่วไปอาจสามารถดูโปรไฟล์ของตนเองได้เท่านั้นในขณะที่ผู้ดูแลระบบสามารถดูและแก้ไขโปรไฟล์ผู้ใช้ทั้งหมดได้
การฆ่าเชื้อ
เพื่อป้องกันการโจมตีเช่น SQL Injection หรือ Cross - Site Scripting (XSS) ให้ sanitize อินพุตทั้งหมดที่ได้รับจากลูกค้า ซึ่งหมายถึงการลบหรือเข้ารหัสตัวละครที่อาจเป็นอันตราย
เอกสาร
เอกสารที่ดีเป็นสิ่งจำเป็นสำหรับความสำเร็จของ API ที่เหลือของคุณ ช่วยให้ลูกค้าเข้าใจวิธีการใช้ API ของคุณและสิ่งที่คาดหวังจากมัน คุณสามารถใช้เครื่องมือเช่น Swagger หรือ OpenAPI เพื่อสร้างเอกสารเชิงโต้ตอบสำหรับ API ของคุณ เอกสารควรรวมถึงรายละเอียดเกี่ยวกับจุดสิ้นสุดวิธีการที่รองรับ HTTP, รูปแบบการร้องขอและข้อมูลการตอบสนองและพารามิเตอร์การสืบค้นหรือส่วนหัวที่จำเป็นต้องใช้
บทสรุป
การสร้าง REST API ต้องใช้การวางแผนการออกแบบการใช้งานและการทดสอบอย่างรอบคอบ โดยการปฏิบัติตามหลักการของสถาปัตยกรรมที่เหลือกำหนดทรัพยากรและการดำเนินงานที่ชัดเจนและพิจารณาความปลอดภัยและเอกสารประกอบคุณสามารถสร้าง API ที่มีคุณภาพสูงซึ่งตรงกับความต้องการของลูกค้าของคุณ
ในฐานะซัพพลายเออร์ APIs เรานำเสนอ API ที่หลากหลายรวมถึงคุณภาพสูงสุด lappaconitine hydrobromide, C32H45BRN2O8, CAS: 97792 - 45 - 5-Albendazole คุณภาพดี, CAS: 54965 - 21 - 8, C12H15N3O2S, และrifampicin เกรดสูงสุด, 13292 - 46 - 1 มาตรฐาน GMP, C43H58N4O12- หากคุณสนใจ API ของเราหรือมีคำถามใด ๆ เกี่ยวกับการสร้าง REST API ของคุณเองอย่าลังเลที่จะติดต่อเราเพื่อรับการจัดซื้อและการอภิปรายเพิ่มเติม
การอ้างอิง
- Richardson, Leonard และ Sam Ruby บริการเว็บพักผ่อน O'Reilly Media, 2007
- Fielding, Roy Thomas รูปแบบสถาปัตยกรรมและการออกแบบสถาปัตยกรรมซอฟต์แวร์ที่ใช้เครือข่าย วิทยานิพนธ์ระดับปริญญาเอกมหาวิทยาลัยแคลิฟอร์เนียเออร์ไวน์ 2543
