Java 何时使用pathParams或QueryParams
什么时候应该为URL使用路径参数,什么时候应该使用查询参数,是否有经验法则 假设我有一张表格发票,上面有company(PK)、InvoiceNo(PK)、Invoiceline、invoiceValue、noOfLines、salesPerson等字段 我目前的想法是,你的URL应该符合Java 何时使用pathParams或QueryParams,java,rest,jax-rs,Java,Rest,Jax Rs,什么时候应该为URL使用路径参数,什么时候应该使用查询参数,是否有经验法则 假设我有一张表格发票,上面有company(PK)、InvoiceNo(PK)、Invoiceline、invoiceValue、noOfLines、salesPerson等字段 我目前的想法是,你的URL应该符合 /Invoice/ 将显示所有发票 /Invoice/{company} 这将显示公司的所有发票 /Invoice/{company}/{InvoiceNo} 显示特定的发票和发票 /Invoice/{
/Invoice/
将显示所有发票
/Invoice/{company}
这将显示公司的所有发票
/Invoice/{company}/{InvoiceNo}
显示特定的发票和发票
/Invoice/{company}/{InvoiceNo}?invoiceLineNo=23
仅显示第23行
我的想法是,主键字段应该是路径的一部分,而您要筛选的任何其他字段都是查询参数的一部分
这听起来像是区分这两者的合理方法吗?我个人的经验法则是,PathParam指向您请求的实体类型
/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?
引用:用于分组数据的路径参数,用于过滤的查询参数仅添加到Gareth的答案中,可选参数也更容易作为查询参数。通常是服务器框架的约束决定了哪一个是最佳选择。对于参数是查询参数还是路径参数,尝试推断太多语义意义并不是真正明智的做法。请记住,URI对客户端是不透明的。@Gareth是否有一个框架可用于自动将实体连接到URL?例如sort=Date真的很好,但是除非我有特殊的需要,否则我不会考虑把它包括进去。我不知道。实际上,我已经在我的一个应用程序中编写了一个半自动的版本,它对hibernate/lucence查询应用了
分页请求
,但像所有这些东西一样,将其取出并开放源代码是相当困难的work@Gareth那是不是lucene和lucene一样讨厌?;-)@GarethDavis在对数据进行修改时会怎样?@Tony也差不多。。因此,邮寄/发票/52/项目另见: