З Вікіпедії: Уніфікований локатор ресурсів
Шлях , який містить дані, зазвичай організований в ієрархічній формі , що відображається як послідовність сегментів, розділених косою рисою.
Необов’язковий запит , відокремлений від попередньої частини знаком питання (?), Що містить рядок запиту неієрархічних даних .
- Відповідно до концептуальної конструкції URL-адреси, ми можемо реалізувати PathParam для ієрархічних компонентів даних / директив / локатора або застосувати QueryParam, коли дані не є ієрархічними. Це має сенс, оскільки шляхи природно впорядковані, тоді як запити містять змінні, які можуть бути упорядковані довільно (не упорядковані пари змінних / значень).
Попередній коментатор написав:
Я думаю, що якщо параметр ідентифікує конкретну сутність, ви повинні використовувати змінну шляху.
Інший написав:
Використовуйте @PathParam для пошуку на основі id. Користувач @QueryParam для фільтра або якщо у вас є фіксований список параметрів, які користувач може пройти.
Інший,
Я рекомендую ввести будь-які необхідні параметри в шлях, і будь-які необов’язкові параметри, безумовно, повинні бути параметрами рядка запиту.
- Однак можна запровадити гнучку неієрархічну систему для визначення конкретних сутностей! У таблиці SQL може бути кілька унікальних індексів і дозволяти ідентифікувати об'єкти за допомогою будь-якої комбінації полів, що містять унікальний індекс! Різні комбінації (можливо, також упорядковані по-різному) можуть використовуватися для посилань різних суміжних об'єктів (референтів). У цьому випадку ми можемо мати справу з неієрархічними даними, які використовуються для ідентифікації окремих сутностей - або в інших випадках можемо вказати лише певні змінні / поля - певні компоненти унікальних індексів - та отримати список / набір записів. У таких випадках реалізувати URL-адреси як QueryParams може бути простіше, більш логічним і розумним!
Чи може довга шістнадцятковий рядок розбавити / зменшити значення ключових слів на іншій частині шляху? Можливо, варто врахувати потенційні наслідки SEO для розміщення змінних / значень на шляху або в запитіта наслідки людського інтерфейсу щодо того, чи хочемо ми, щоб користувачі могли переходити / досліджувати ієрархію URL-адрес, редагуючи вміст адресного рядка. Моя сторінка 404 Not Found використовує змінні SSI для автоматичного перенаправлення зламаних URL-адрес на батьків! Пошукові роботи також можуть пройти ієрархію шляху. З іншого боку, особисто, коли я ділюсь URL-адресами в соціальних мережах, я вручну викреслюю будь-які приватні унікальні ідентифікатори - як правило, обрізаючи запит з URL-адреси, залишаючи лише шлях: у цьому випадку є якась корисна програма для розміщення унікальних ідентифікаторів у шляху, а не в запиті. Ми хочемо полегшити використання компонентів шляху як грубого інтерфейсу користувача, можливо, залежить від того, чи дані / компоненти читаються людиною чи ні. Питання читабельності людини дещо пов'язане з питанням ієрархії: часто, дані, які можуть бути виражені як людиночитані ключові слова, також є ієрархічними; в той час як ієрархічні дані часто можуть бути виражені як читабельні для людини ключові слова. (Самі пошукові системи можуть бути визначені як розширення використання URL-адрес як інтерфейсу користувача.) Ієрархії ключових слів або директив можуть бути не строго впорядковані, але вони, як правило, досить близькі, щоб ми могли охопити альтернативні випадки на шляху, іпозначте один варіант як "канонічний" випадок .
Існує декілька питань, на які ми можемо відповісти URL-адресою кожного запиту:
- Які записи / речі ми запитуємо / обслуговуємо?
- Які з них нас цікавлять?
- Як ми хочемо представити інформацію / записи?
Q1 майже напевно найкраще висвітлюється шляхом або шляхом PathParams. Q3 (який, ймовірно, контролюється за допомогою набору довільно упорядкованих необов'язкових параметрів та значень за замовчуванням); майже напевно найкраще висвітлюється QueryParams. Q2: Це залежить ...