การออกแบบ URL ที่น่ารักสงบกำลังเกี่ยวกับการแสดงทรัพยากรตามโครงสร้าง (โครงสร้างไดเรกทอรีเหมือนวันที่: บทความ / 2005/5/13, วัตถุและคุณลักษณะของมัน .. ), เครื่องหมายทับ/
บ่งบอกถึงโครงสร้างลำดับชั้นใช้-id
แทน
โครงสร้างลำดับชั้น
ฉันจะเป็นคนชอบ:
/garage-id/cars/car-id
/cars/car-id #for cars not in garages
หากผู้ใช้ลบชิ้น/car-id
ส่วนมันจะนำcars
ตัวอย่าง - ใช้งานง่าย ผู้ใช้รู้ว่าเขาอยู่ที่ไหนในต้นไม้เขามองอะไรอยู่ เขารู้ตั้งแต่แรกว่าโรงรถและรถยนต์มีความสัมพันธ์กัน นอกจากนี้ยังหมายถึงว่ามันเป็นของไม่เหมือนกัน/car-id
/car/id
ค้นหา
คำค้นหานั้นตกลงเพราะมีเพียงความชอบของคุณเท่านั้นสิ่งที่ควรนำมาพิจารณา ส่วนที่ตลกมาเมื่อเข้าร่วมการค้นหา (ดูด้านล่าง)
/cars?color=blue;type=sedan #most prefered by me
/cars;color-blue+doors-4+type-sedan #looks good when using car-id
/cars?color=blue&doors=4&type=sedan #I don't recommend using &*
หรืออะไรก็ตามที่ไม่ใช่สแลชตามที่อธิบายไว้ข้างต้น
สูตร: /cars[?;]color[=-:]blue[,;+&]
, * ถึงแม้ว่าฉันจะไม่ใช้&
เครื่องหมายเพราะมันเป็นสิ่งที่ไม่สามารถจดจำได้จากข้อความเมื่อแรกเห็น
** คุณรู้หรือไม่ว่าการผ่านวัตถุ JSON ใน URI นั้นสงบแล้ว **
รายการตัวเลือก
/cars?color=black,blue,red;doors=3,5;type=sedan #most prefered by me
/cars?color:black:blue:red;doors:3:5;type:sedan
/cars?color(black,blue,red);doors(3,5);type(sedan) #does not look bad at all
/cars?color:(black,blue,red);doors:(3,5);type:sedan #little difference
คุณสมบัติที่เป็นไปได้?
ปฏิเสธสตริงการค้นหา (!)
ในการค้นหารถยนต์ใด ๆ แต่ไม่ใช่ ดำและแดง :
?color=!black,!red
color:(!black,!red)
เข้าร่วมค้นหาการ
ค้นหารถยนต์สีแดงหรือสีน้ำเงินหรือสีดำที่มี3ประตูในโรงรถ id 1..20หรือ101..103หรือ999แต่ไม่ใช่ 5
/garage[id=1-20,101-103,999,!5]/cars[color=red,blue,black;doors=3]
จากนั้นคุณสามารถสร้างคำค้นหาที่ซับซ้อนมากขึ้น (ดูที่การจับคู่แอตทริบิวต์ CSS3สำหรับแนวคิดของการจับคู่สตริงย่อยเช่นการค้นหาผู้ใช้ที่มี "bar" user*=bar
)
ข้อสรุป
อย่างไรก็ตามนี้อาจจะมีส่วนที่สำคัญที่สุดสำหรับคุณเพราะคุณสามารถทำมัน แต่คุณชอบหลังจากทั้งหมดเพียงแค่เก็บไว้ในใจที่สงบ URI แสดงให้เห็นถึงโครงสร้างซึ่งเป็นที่เข้าใจได้อย่างง่ายดายเช่นไดเรกทอรีเหมือน/directory/file
, /collection/node/item
วัน/articles/{year}/{month}/{day}
.. และเมื่อคุณไม่ใช้ กลุ่มสุดท้ายใด ๆ คุณจะรู้ทันทีว่าคุณได้อะไร
ดังนั้น .. , อักขระเหล่านี้ทั้งหมดไม่ได้รับอนุญาต :
RFC 3986 ดู 2.2
แม้จะมีสิ่งที่ฉันพูดก่อนหน้านี้นี่คือความแตกต่างทั่วไปของ delopes ซึ่งหมายความว่าบาง"มี"สำคัญกว่าคนอื่น ๆ
- delimeters ทั่วไป:
:/?#[]@
- ย่อย delimeters:
!$&'()*+,;=
การอ่านเพิ่มเติม:
ลำดับชั้น: ดู 2.3 , ดูที่ 1.2.3
url path พารามิเตอร์ syntax
CSS3 attribute ที่ตรงกับ
IBM: RESTful Web services - ข้อมูลพื้นฐาน
หมายเหตุ: RFC 1738 ได้รับการอัพเดตโดย RFC 3986
/cars
และ/car
ไม่ใช่ความหมายดังนั้นจึงเป็นความคิดที่ไม่ดี ใช้พหูพจน์เสมอเมื่อมีมากกว่าหนึ่งรายการภายใต้หมวดหมู่นั้น