java - jax - Cuándo usar pathParams o QueryParams
jersey servlet (2)
Mi regla de oro personal es que PathParam lleva 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 a Mr Rowe : Parámetros de ruta para agrupar datos, consultar parámetros para filtrar
Esta pregunta ya tiene una respuesta aquí:
- Cuándo usar @QueryParam vs @PathParam 13 respuestas
¿Existe una regla general sobre cuándo se deben usar los parámetros de ruta para una URL en lugar de cuándo se deben usar los parámetros de consulta?
Digamos que tengo una tabla Factura con los campos empresa (PK), InvoiceNo (PK), Invoiceline, invoiceValue, noOfLines, salesPerson
Mi pensamiento actual es que su URL debe estar en la línea de
/Invoice/
Que mostraría todas las facturas.
/Invoice/{company}
Que mostraría todas las facturas de la empresa.
/Invoice/{company}/{InvoiceNo}
Muestra esa factura específica y
/Invoice/{company}/{InvoiceNo}?invoiceLineNo=23
muestra solo la línea 23.
La forma en que pienso es que los campos de la clave principal deberían formar parte de la ruta y cualquier otro campo que filtraría formaría parte del parámetro de consulta.
¿Suena esto como una manera razonable de distinguir entre los dos?
Solo para agregar a la respuesta de Gareth, los parámetros opcionales también son más fáciles de colocar como parámetros de consulta. Por lo general, son las restricciones de la estructura de su servidor las que dictan cuál es la mejor opción. No es realmente prudente tratar de inferir demasiada importancia semántica para saber si un parámetro es un parámetro de consulta o un parámetro de ruta. Recuerde, los URI son opacos para el cliente.