2011-06-14 18 views
27

¿Existe una regla general sobre cuándo se deben usar los parámetros de ruta para una URL y cuándo se deben usar parámetros de consulta?Cuándo utilizar pathParams o QueryParams

Decir que tengo una factura de mesa con la compañía campos (PK), InvoiceNo (PK), Invoiceline, invoiceValue, noOfLines, vendedor

Mi pensamiento actual es que la URL debe estar en la línea de

/Invoice/ 

cual sería mostrar todas las facturas

/Invoice/{company} 

cual sería mostrar todas las facturas de la empresa.

/Invoice/{company}/{InvoiceNo} 

Muestra que la factura específica y

/Invoice/{company}/{InvoiceNo}?invoiceLineNo=23 

muestra sólo la línea 23.

La forma en que estoy pensando es que los campos de clave primaria deben ser parte de la ruta y cualquier otro campo que usted filtraría son parte del parámetro de consulta.

¿Suena esto como una forma razonable de distinguir entre los dos?

+0

Vea también: http://stackoverflow.com/q/11552248/1725096 –

Respuesta

44

Mi regla empírica personal que el PathParam conduce hasta el tipo de entidad que está solicitando.

/Invoices    // all invoices 
/Invoices?after=2011 // a filter on all invoices 

/Invoices/52   // by 52 
/Invoices/52/Items // all items on invoice 52 
/Invoices/52/Items/1 // Item 1 from invoice 52 

/Companies/{company}/Invoices?sort=Date 
/Companies/{company}/Invoices/{invoiceNo} // assuming that the invoice only unq by company? 

Para citar Mr Rowe: parámetros de ruta para la agrupación de datos, parámetros de consulta para filtrar

+3

+1 para sugerir que los parámetros de consulta se puedan utilizar para filtrar. – Qwerky

+9

+1 Parámetros de ruta para agrupar datos, parámetros de consulta para filtrar –

+0

@Gary Muy bien resumido –

6

Sólo para añadir a la respuesta de Gareth, parámetros opcionales son también más fáciles de poner como Parámetros de consulta. Usualmente son las restricciones de su marco de servidor las que dictan cuál es la mejor opción. No es realmente prudente tratar de inferir demasiada significación semántica a si un parámetro es un parámetro de consulta o un parámetro de ruta. Recuerde, los URI son opacos para el cliente.

Cuestiones relacionadas