ความแตกต่างระหว่างทรัพยากรและจุดสิ้นสุดคืออะไร?


139

ฉันเคยได้ยินทั้ง "ทรัพยากร" และ "ปลายทาง" เพื่ออ้างถึงสิ่งเดียวกัน ดูเหมือนว่าทรัพยากรเป็นคำที่ใหม่กว่า

ความแตกต่างระหว่างพวกเขาคืออะไร? "ทรัพยากร" แสดงถึงการออกแบบที่สงบเงียบหรือไม่?

คำตอบ:


107

ส่วนที่เหลือ

ทรัพยากรเป็นส่วนย่อยสงบของปลายทาง

ปลายทางโดยตัวเองเป็นสถานที่ที่ให้บริการสามารถเข้าถึงได้:

https://www.google.com    # Serves HTML
8.8.8.8                   # Serves DNS
/services/service.asmx    # Serves an ASP.NET Web Service

ทรัพยากรหมายถึงหนึ่งหรือมากกว่าคำนามที่ถูกเสิร์ฟเป็นตัวแทนในแฟชั่น namespaced เพราะมันเป็นเรื่องง่ายสำหรับมนุษย์ที่จะเข้าใจ:

/api/users/johnny         # Look up johnny from a users collection.
/v2/books/1234            # Get book with ID 1234 in API v2 schema.

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

คำขอ REST เปรียบเสมือนประโยคที่ประกอบด้วยคำนาม (ทรัพยากร) และคำกริยา (เมธอด HTTP):

  • GET(วิธีการ) ชื่อผู้ใช้johnny(ทรัพยากร)
  • DELETE(method) หนังสือที่มี id 1234(ทรัพยากร)

Non-REST

โดยทั่วไปปลายทางหมายถึงบริการ แต่ทรัพยากรอาจมีความหมายหลายอย่าง นี่คือตัวอย่างของทรัพยากรที่ขึ้นอยู่กับบริบทที่ใช้

URL: ตัวระบุ "ทรัพยากร" ที่เหมือนกัน

  • อาจสงบ แต่ก็ไม่บ่อยนัก ในกรณีนี้ปลายทางมีความหมายเหมือนกัน

การจัดการทรัพยากร

  • ในGCP / AWSใช้ทรัพยากรในการอ้างอิงถึงโครงสร้างพื้นฐานคลาวด์
  • ในการใช้คอมพิวเตอร์ทั่วไปทรัพยากรคือการอ้างอิงถึงส่วนประกอบที่มีจำนวน จำกัด

พจนานุกรม

สิ่งที่สามารถใช้เพื่อช่วยคุณ:

ห้องสมุดเป็นทรัพยากรที่มีค่าและเขามักจะใช้ประโยชน์จากมัน

ทรัพยากรเป็นสารธรรมชาติเช่นน้ำและไม้ที่มีคุณค่าในการดำรงชีวิต:

[pl] โลกมีทรัพยากร จำกัด และหากเราไม่รีไซเคิลเราจะใช้ให้หมด

ทรัพยากรก็เป็นของมีค่าเช่นเงินหรือสิ่งของที่คุณสามารถใช้ได้เมื่อคุณต้องการ:

[pl] รัฐบาลไม่มีทรัพยากรที่จะจ้างจำนวนครูที่ต้องการ


คุณธรรม

คำว่าทรัพยากรโดยคำจำกัดความมีความแตกต่างกันเล็กน้อย ทุกอย่างขึ้นอยู่กับบริบทที่ใช้


1
ฉันสงสัยเหมือนกัน คุณเคยเห็นการอ้างอิงใด ๆ ที่อธิบายหรือบันทึกเอกสารนี้หรือไม่?
B เซเว่น

เพิ่มลิงก์บางส่วนที่ให้ความรู้สึกสำหรับแต่ละคำ
cchamberlain

84

เงื่อนไข ทรัพยากรและปลายทางมักใช้เหมือนกัน แต่ในความเป็นจริงพวกเขาไม่ได้หมายถึงสิ่งเดียวกัน

จุดปลายคำมุ่งเน้นไปที่URLที่ใช้ในการร้องขอ
ระยะเวลาทรัพยากรมุ่งเน้นไปที่ชุดข้อมูลที่ส่งคืนโดยการร้องขอ

ตอนนี้ทรัพยากรเดียวกันสามารถเข้าถึงได้โดยจุดปลายที่แตกต่างกันหลายแห่ง
อีกทั้งยังปลายทางเดียวกันสามารถกลับทรัพยากรที่แตกต่างกันขึ้นอยู่กับสตริงแบบสอบถาม

ให้เราดูตัวอย่าง:

ปลายทางต่าง ๆ ที่เข้าถึงทรัพยากรเดียวกัน

ดูที่ตัวอย่างต่อไปนี้ของจุดปลายที่แตกต่างกัน :

/api/companies/5/employees/3
/api/v2/companies/5/employees/3
/api/employees/3

เห็นได้ชัดว่าพวกเขาทุกคนสามารถเข้าถึงทรัพยากรเดียวกันได้ใน API ที่กำหนด

API ที่มีอยู่ยังสามารถเปลี่ยนแปลงได้อย่างสมบูรณ์ สิ่งนี้อาจนำไปสู่ปลายทางใหม่ที่จะเข้าถึงทรัพยากรเดิมโดยใช้ URL ใหม่และที่แตกต่างกันโดยสิ้นเชิง:

/api/employees/3
/new_api/staff/3

จุดปลายหนึ่งเข้าถึงทรัพยากรที่แตกต่าง

หากปลายทางของคุณส่งคืนคอลเล็กชันคุณสามารถใช้การค้นหา / การกรอง / การเรียงลำดับโดยใช้สตริงการสืบค้น ดังนั้น URL ต่อไปนี้จึงใช้จุดปลาย ( /api/companies) เดียวกัน แต่สามารถส่งคืนทรัพยากรที่แตกต่างกัน (หรือการรวบรวมทรัพยากรซึ่งโดยนิยามคือทรัพยากรในตัวเอง):

/api/companies
/api/companies?sort=name_asc
/api/companies?location=germany
/api/companies?search=siemens

4
อธิบายอย่างดี👍🏻
mangonights

1
"ด้วยเหตุนี้ URL ต่อไปนี้จึงใช้จุดปลายเดียวกัน (/ api / companies) เดียวกัน แต่สามารถส่งคืนทรัพยากรต่าง ๆ ได้" ฉันไม่ได้หมายถึงความผิด แต่คุณแค่แปลความหมายของคุณที่นี่ ในแง่ของ REST เหล่านี้เป็นเพียงแหล่งข้อมูลที่แตกต่างกัน ส่วนจุดสิ้นสุดที่คุณพยายามทำบัญชีเพื่อเป็นส่วนอื่นของ URL เป็นเพราะคุณเป็นโปรแกรมเมอร์และคุณคิดว่าจะนำไปใช้อย่างไรในฐานะส่วนหนึ่งของรหัสในวิธีการกระทำเดียว ลองนึกภาพว่า URL ที่แตกต่างกันทั้งหมดเหล่านี้ถูกกำหนดเส้นทางและให้บริการจากเซิร์ฟเวอร์ 4 เครื่องทั้งหมดนั้นเป็นปลายทางเดียวกันหรือไม่ มันไม่สมเหตุสมผลเลย
Luke Puplett

1
เหตุผลสตริงการสืบค้นไม่ได้เป็นส่วนหนึ่งของจุดสิ้นสุดเนื่องจากจุดปลายไม่ได้เป็นส่วนหนึ่งของภาษาของ REST หรือ URL มันไม่ใช่ คุณกำลังคิดในแง่ของการเขียนโปรแกรมจัดการเว็บ ส่วนที่เหลือกล่าวถึงอะไรเกี่ยวกับแบบสอบถาม params หรือเรียงลำดับหรืออะไร มันแค่ทำไม่ได้ หากคุณใช้ / orders เพื่อส่งคืนคอลเล็กชันและ / orders? top = 10 นั่นเป็น URL ที่น่ารักนั่นก็คือ RESTful ไม่มากไปกว่าการใช้ลิงก์ไปยัง / 32knre32nj สำหรับคอลเล็กชันและลิงก์ไปยัง / abcd สำหรับคำสั่งสิบอันดับแรก มันเป็นเพียงตัวระบุทรัพยากร URL ต้องไม่สงบมากหรือน้อยและจุดปลายไม่ใช่สิ่ง
ลุค Puplett

เพียงเพื่อเพิ่มส่วนสำคัญของ REST คือการเชื่อมโยงเช่นที่ผู้บริโภคไม่ต้องการดูแลตัวระบุทรัพยากรส่วนใหญ่ฉันไม่สนใจสิ่งที่ URL นั่งอยู่ด้านหลังปุ่มเพิ่มความคิดเห็นที่นี่ เมื่อเราหยุดคิดในปลายทางและ URL ที่สวยงามและแทนที่จะเชื่อมโยงหลายมิติที่ URL นั้นเป็นเรื่องง่ายมากที่จะออกแบบ APIs ตามเวิร์กโฟลว์ที่ดีบนเป้าหมายการโต้ตอบ - ฉันต้องการค้นหา บริษัท เพื่อให้ x - API ของคุณควรเป็นเส้นทาง ถึง x โดยที่การค้นหาอยู่ตรงกลางของโฟลว์ไปยังสถานะแอปพลิเคชันในที่สุด
ลุค Puplett

ไม่มีคำจำกัดความหรือข้อกำหนดมาตรฐานสูงสำหรับ "ปลายทาง" ทุกอย่างต้องใช้เทคโนโลยีที่ใช้อ้างอิง ตรงประเด็น google "จุดสิ้นสุดคืออะไร" และหนึ่งในบทความยอดนิยมในเรื่องนี้คือหน้านี้ เรานิยามมันตรงนี้ตามบริบทที่เราเคยเห็น ตัวอย่างทั้งหมดในคำตอบนี้สงบแม้ว่าจุดสิ้นสุดเองไม่จำเป็นต้องสงบ ดูสบู่
cchamberlain

7

อาจเป็นไปได้ว่าฉันไม่ใช่คำตอบที่ดี แต่นี่จะไป

เนื่องจากทำงานกับ RESTful เว็บเซอร์วิสอย่างแท้จริงผ่าน HTTP ฉันพยายามคัดท้ายผู้คนให้ออกไปจากการใช้คำปลายทางเพราะมันไม่มีคำจำกัดความที่ชัดเจนและใช้ภาษาของ REST ซึ่งเป็นแหล่งทรัพยากรและที่ตั้งแทน

ในใจของฉันปลายทางคือคำศัพท์ TCP มันทำให้สับสนกับ HTTP เพราะส่วนหนึ่งของ URL ระบุเซิร์ฟเวอร์การฟัง

ดังนั้นทรัพยากรไม่ใช่คำใหม่ฉันไม่คิดว่าฉันคิดว่าปลายทางถูกยักยอกอยู่เสมอและเราตระหนักว่าเมื่อเราได้รับความสนใจจาก REST ในรูปแบบของ API

แก้ไข

ฉัน blogged เกี่ยวกับเรื่องนี้

https://medium.com/@lukepuplett/stop-saying-endpoints-92c19e33e819


1

ตามhttps://apiblueprint.org/documentation/examples/13-named-endpoints.htmlเป็นทรัพยากรที่เป็นสถานที่ที่ "ทั่วไป" ของการจัดเก็บของกิจการที่ได้รับ - เช่น / ลูกค้า / 30654 / คำสั่งขณะที่ปลายทางคือการกระทำที่เป็นรูปธรรม (วิธี HTTP) บนทรัพยากรที่กำหนด ดังนั้นหนึ่งทรัพยากรสามารถมีจุดปลายได้หลายจุด


1
ขออภัย @Dafka แต่คุณผิด จุดปลายไม่มีอะไรเกี่ยวข้องกับกริยา (เมธอด HTTP เช่น GET, POST, PUT, DELETE, PATCH) ที่ใช้งานอยู่
Jpsy

0

พิจารณาเซิร์ฟเวอร์ที่มีข้อมูลของผู้ใช้ภารกิจและคะแนนสะสม

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

ป้อนคำอธิบายรูปภาพที่นี่

ที่มา: API Endpoints และทรัพยากร


-1

1. คำอธิบายทรัพยากร “ ทรัพยากร” หมายถึงข้อมูลที่ส่งคืนโดย API

2. จุดสิ้นสุดและวิธีการจุดสิ้นสุดระบุวิธีที่คุณเข้าถึงทรัพยากรในขณะที่วิธีการระบุการโต้ตอบที่อนุญาต (เช่น GET, POST หรือ DELETE) กับทรัพยากร

ข้อมูลเพิ่มเติม: 3. พารามิเตอร์ พารามิเตอร์คือตัวเลือกที่คุณสามารถส่งผ่านไปยังจุดสิ้นสุด (เช่นการระบุรูปแบบการตอบกลับหรือจำนวนเงินที่ส่งคืน) เพื่อให้มีผลต่อการตอบกลับ

4. ตัวอย่าง คำขอตัวอย่างคำขอรวมคำขอตัวอย่างโดยใช้จุดปลายโดยแสดงพารามิเตอร์บางอย่างที่กำหนดค่า

5. ตัวอย่างการตอบกลับและสคีมา ตัวอย่างการตอบกลับแสดงตัวอย่างการตอบกลับจากตัวอย่างคำขอ สกีมาการตอบสนองกำหนดองค์ประกอบที่เป็นไปได้ทั้งหมดในการตอบสนอง

แหล่งที่มาของ การเชื่อมโยงข้อมูลอ้างอิง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.