REST URI设计:可选和多值信息传递 - java

我有一个搜索小部件,人们可以通过邮政编码搜索汽车经销商。还有一些可选的复选框可以优化该小部件中的搜索。

这是用于按邮政编码搜索经销商的URI。

http://localhost:8080/dealer/zip/10080

如果用户选择复选框,则URI为

http://localhost:8080/dealer/zip/10080servicetype=type1&servicetype=type2&servicetype=type3

我正在使用jersey。这是Java代码。

@Path("/dealer")
@Produces(MediaType.APPLICATION_JSON)
public class DealerLocatorRS {
    private DealerService dealerService=new DealerService();

    @GET
    @Path("/zip/{zip}")
    public List<Dealer> getByZip(@PathParam("zip") String zip, 
        @QueryParam("servicetype") List<String> servicetype){
    .. . ..
    }

这是传递可选和多个值的正确方法吗?有人可以帮助我运用最佳做法吗?

参考方案

我不确定是否将搜索到的特定邮政编码的经销商映射到资源。感觉不太正确。取而代之的是,我有一个列出所有经销商的资源,而每个经销商都是该经销商的子资源。如果可以返回受属性(例如其邮政编码)限制的子资源列表的子集,那么这将是实现搜索的好方法,否则我将有一个单独的搜索处理程序来返回链接列表匹配经销商资源。

@Path("/dealer")
public class Dealers {
    @GET
    public List<Dealer> getAll() { ... }
    @GET
    @Path("search/byZip")
    public List<URI> getByZip(@QueryParam("zip") String zip, ...) { ... }
    @Path("{dealerId:[^/]+}")
    public Dealer getDealer(@PathParam("dealerId") String id) { ... }
}

来自webapp1的HTML5视频使用来自webapp2的源,如何避免将webapp2暴露给来自外部网络的浏览器 - java

Web应用程序由同一物理主机上的jBoss和Tomcat组成,但端口号不同。客户端浏览器从jBoss页面访问视频,但是标签“ source”由HTTP POST REST组成,该REST到视频资源实际所在的Tomcat。如果浏览器从内部网络访问带有视频的页面,则可以。但是从外部网络只能通过端口转发访问jBoss的https端口。因此,从外部网络REST到To…

是否有为Spring 3 REST Controller生成JSON SMD的解决方案? - java

我和一位同事正在建立一种架构,以使用REST和JSON快速开发富客户端应用程序。我们的服务器正在使用Spring 3的MVC和REST功能将REST服务公开为Spring控制器。对于非标准REST调用,我们想使用服务映射描述符(SMD)公开某些控制器的协定:http://groups.google.com/group/json-schema/web/serv…

使用哪个Spring和Hibernate版本 - java

Improve this question 我是Spring和Hibernate的新手。我必须开发一些REST API。因此,我需要帮助选择Spring和Hibernate的正确版本。一些初学者建议使用spring 3.0和Hibernat2 2.0。是正确的选择还是我必须使用spring 3.0和spring 3.0? 参考方案 一点都不。这两个版本已完全…

如何通过Java集成测试修改网络连接? - java

我编写了一个Java类(MyRestClient),该类需要访问第三方RESTful API,并使用从其服务器返回的HTTP响应进行一些处理。我现在正在尝试在JUnit和第三方API之间编写一系列成功的集成测试(使用MyRestClient作为基础的testng库),以确保此类在各种情况下的行为正确:一切都很完美(RESTful API调用正确,服务器返回了…

RESTAsured获得两个可能的状态代码之一 - java

我有RESTAssured的test(!)代码,该代码检查REST端点是否将0作为状态代码返回给我; given() .contentType(CONTENT_TYPE_APPLICATION_JSON) .when() .get(getRestOperationPath()) .then() .statusCode(STATUS_CODE_OK); 但是现…