【问题标题】:Restlet: How can I retrieve DTO with setting custom MediaType?Restlet:如何通过设置自定义 MediaType 来检索 DTO?
【发布时间】:2014-12-18 07:31:59
【问题描述】:

如何使用自定义MediaType 发送实体的 GET 请求?

例如我想检索MyUserDTO并将MediaType设置为application/user+yml

现在我有两个分开的动作。我可以检索实体:

resource.get(MyUserDTO.class);

并且可以检索字符串:

resource.get(new MediaType("application", "user+yml");

但是如何组合它们呢?或者也许有一些技巧可以配置 Restlet 来教他如何使用自定义 MediaType。

【问题讨论】:

    标签: java restlet restlet-2.0


    【解决方案1】:

    事实上,您有正确的方法,但您没有使用正确的类MediaType (new MediaType(name, description)) 的构造函数。

    要使您的代码正常工作,您需要将其更改为:

    resource.get(new MediaType("application/user+yml"));
    

    在服务器端,你会得到这个:

    @Get
    public Representation getSomething() {
        System.out.println(">> media types = " +
        getRequest().getClientInfo().getAcceptedMediaTypes());
        // Display this: media types = [application/user+yml:1.0]
        (...)
    }
    

    您可以通过在注解Get 中添加一个值来利用Restlet 的扩展支持。在您的情况下,您需要添加一个自定义扩展,如下所述:

    public class MyApplication extends Application {
        public MyApplication() {
            getMetadataService().addExtension(
                "myextension", new MediaType("application/user+yml"));
            (...)
        }
    
        @Override
        public Restlet createInboundRoot() {
            (...)
        }
    }
    

    现在您可以在服务器资源中使用扩展:

    @Get("myextension")
    public Representation getSomething() {
        (...)
    }
    

    此方法将与预期的媒体类型一起使用application/user+yml

    希望对你有帮助 蒂埃里

    【讨论】:

      猜你喜欢
      • 2015-02-23
      • 1970-01-01
      • 2015-01-26
      • 2013-08-31
      • 1970-01-01
      • 1970-01-01
      • 2013-09-29
      • 2021-07-31
      • 2012-07-01
      相关资源
      最近更新 更多