เมื่อออกแบบอินเตอร์เฟส RESTful ซีแมนทิกส์ของประเภทคำขอจะถือว่ามีความสำคัญต่อการออกแบบ
- GET - รายการคอลเลกชันหรือดึงองค์ประกอบ
- PUT - แทนที่คอลเลกชันหรือองค์ประกอบ
- POST - สร้างคอลเล็กชันหรือองค์ประกอบ
- DELETE - เอออืมลบคอลเลกชันหรือองค์ประกอบ
อย่างไรก็ตามสิ่งนี้ดูเหมือนจะไม่ครอบคลุมแนวคิดของ "การค้นหา"
เช่นในการออกแบบชุดบริการเว็บที่สนับสนุนไซต์หางานคุณอาจมีข้อกำหนดต่อไปนี้:
- รับโฆษณางานบุคคล
- รับไป
domain/Job/{id}/
- รับไป
- สร้างงานโฆษณา
- โพสต์ถึง
domain/Job/
- โพสต์ถึง
- อัปเดตงานโฆษณา
- ใส่ลงไป
domain/Job/
- ใส่ลงไป
- ลบโฆษณางาน
- ลบไปที่
domain/Job/
- ลบไปที่
"รับงานทั้งหมด" ก็ง่าย:
- รับไป
domain/Jobs/
อย่างไรก็ตามงาน "การค้นหา" ตกอยู่ในโครงสร้างนี้อย่างไร
คุณสามารถอ้างว่าเป็น "รูปแบบรายการ" และใช้เป็น:
- รับไป
domain/Jobs/
อย่างไรก็ตามการค้นหาอาจซับซ้อนและเป็นไปได้ทั้งหมดในการสร้างการค้นหาที่สร้างสตริง GET ที่ยาว นั่นคือการอ้างอิงคำถาม SO ที่นี่มีปัญหาในการใช้สตริง GET ที่มีความยาวมากกว่า 2000 ตัวอักษร
ตัวอย่างอาจอยู่ในการค้นหาแบบเหลี่ยมเพชรพลอย - ดำเนินการต่อตัวอย่าง "job"
ฉันอาจอนุญาตให้ค้นหาในแง่มุม - "เทคโนโลยี", "ตำแหน่งงาน", "มีระเบียบวินัย" เช่นเดียวกับคำหลักที่เป็นข้อความอิสระอายุงานตำแหน่งและเงินเดือน
ด้วยอินเทอร์เฟซผู้ใช้ที่คล่องแคล่วและเทคโนโลยีและตำแหน่งงานจำนวนมากจึงเป็นไปได้ที่การค้นหาอาจรวมตัวเลือกด้านข้อมูลจำนวนมาก
ปรับแต่งตัวอย่างนี้เป็น CV แทนที่จะนำงานเข้ามาเพิ่มมากขึ้นและคุณสามารถจินตนาการได้อย่างง่ายดายว่าการค้นหาด้วยการเลือกร้อยหน้าหรือเพียง 40 แง่มุมแต่ละอันมีความยาว 50 ตัวอักษร (เช่นชื่องาน, ชื่อมหาวิทยาลัย, ชื่อนายจ้าง)
ในสถานการณ์ดังกล่าวอาจเป็นการดีที่จะย้าย PUT หรือ POST เพื่อให้แน่ใจว่าข้อมูลการค้นหาจะได้รับการส่งอย่างถูกต้อง เช่น:
- โพสต์ถึง
domain/Jobs/
แต่ความหมายคือคำแนะนำในการสร้างคอลเลกชัน
นอกจากนี้คุณยังสามารถบอกได้ว่าคุณจะแสดงสิ่งนี้เป็นการสร้างการค้นหา:
- โพสต์ถึง
domain/Jobs/Search/
หรือ (ตามที่แนะนำโดย burngramma ด้านล่าง)
- โพสต์ถึง
domain/JobSearch/
ความหมายดูเหมือนจะสมเหตุสมผล แต่จริงๆแล้วคุณไม่ได้สร้างอะไรเลยคุณกำลังขอข้อมูล
ดังนั้นความหมายมันเป็นGETแต่GETไม่รับประกันว่าจะสนับสนุนสิ่งที่คุณต้องการ
ดังนั้นคำถามคือ - พยายามทำให้เป็นจริงกับการออกแบบ RESTful ที่สุดเท่าที่จะเป็นไปได้ในขณะเดียวกันก็ทำให้แน่ใจได้ว่าฉันกำลังรักษาข้อ จำกัด ของ HTTP ไว้การออกแบบที่เหมาะสมที่สุดสำหรับการค้นหาคืออะไร
domain/Jobs?keyword={keyword}
มันใช้งานได้ดีสำหรับฉัน :) ความหวังของฉันคือว่าSEARCH
คำกริยาจะกลายเป็นมาตรฐาน programmers.stackexchange.com/questions/233158/…