Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java RESTful服务——QueryParam和PathParam在使用上有什么区别?_Java_Rest - Fatal编程技术网

Java RESTful服务——QueryParam和PathParam在使用上有什么区别?

Java RESTful服务——QueryParam和PathParam在使用上有什么区别?,java,rest,Java,Rest,QueryParam和PathParam在用法上有什么区别 我知道数据可以通过这两种方式传递给服务。PathParam数据是否正在处理?在URL和QueryParam中,名称值数据位于?之后?。但我想知道这些究竟是如何使用的 @QueryParam用于访问URL查询字符串中的键/值对(后面的部分?)。例如,在urlhttp://example.com?q=searchterm,您可以使用@QueryParam(“q”)获取q的值 @PathParam用于匹配URL的一部分作为参数。例如,在htt

QueryParam和PathParam在用法上有什么区别


我知道数据可以通过这两种方式传递给服务。PathParam数据是否正在处理?在URL和QueryParam中,名称值数据位于?之后?。但我想知道这些究竟是如何使用的

@QueryParam
用于访问URL查询字符串中的键/值对(后面的部分?)。例如,在url
http://example.com?q=searchterm
,您可以使用
@QueryParam(“q”)
获取
q
的值

@PathParam
用于匹配URL的一部分作为参数。例如,在
http://example.com/books/{bookid}
,您可以使用
@PathParam(“bookid”)
获取书籍的id


请参阅JAX-RS中使用的示例。

实践中可能没有一个正确的答案,因为在“野外”中使用了如此多不同的URL方案。不过,从REST URL处理的角度来看,这是一个很有用的方法。在REST(代表性状态转移)中,想法是能够唯一地标识您想要提供访问的每个资源。在常见的REST方案中,URL的路径部分可以看作是N空间中的一组坐标(即,x,y,z=>//myApp/x/y/z),查询参数是进一步的说明符。这些进一步的说明符可以用作不完整路径规范的搜索条件,以返回匹配资源的列表

有关REST URL的更多示例,请参见

编辑: @马可有一个很好的技术答案,但随着你最新评论的曝光,你似乎更感兴趣的是什么时候选择一个而不是另一个。通常,如果您要创建“纯”RESTful API,那么路径中的任何内容都应该通过它们的标识唯一地标识资源。通常,这可能会使URL以ID值结尾,作为唯一标识资源的路径的一部分

但是,如果您的API直接公开了按属性(可能不包括ID)进行搜索/过滤的功能,则更有可能将其编码为查询参数


这些只是示例,对于什么需要一个好的API,以及更具体地说API需要多纯粹的REST风格,存在不同的观点。

@QueryParam:用于获取参数作为键值对,并基于QueryParam中的键,可以从URL获取键的值。 例如,example.com/id=searchParam

@QueryParam(“id”)则值将是searchParam

@PathParam:用于从URL获取参数(如果参数包含按URL)。 例如abc.com/searchParam/{empId}


@PathParam(“empId”)

您的问题更多的是关于如何使用它们,还是您真的想问什么时候(即在什么情况下)将某个东西编码为路径vs的一部分作为查询参数?Kevin,我的意思是问我什么时候应该将某个东西编码为路径vs的一部分作为查询参数?提前感谢..我现在更感兴趣的是知道什么时候应该将某个东西编码为path param vs的一部分作为查询参数。相关问题。希望它能帮助别人。它与拥有40多张选票的共和党有多大不同?