当前位置: 首页 > 面试题库 >

为什么使用REST @Produces批注

习海
2023-03-14
问题内容

因此,我知道您正在指定类型,但是为什么呢?在什么条件下会很重要。例如,如果我具有以下方法,并且注释掉@Produces批注,它仍将返回JSON。

@GET
@Path("/json")
//@Produces({MediaType.APPLICATION_JSON})
public String getJson(){
    return toJson(getResults());
}

API文档说:“如果未指定,则容器将假定可以产生任何类型。” 那么,为什么我不希望容器承担这种责任呢?


问题答案:

我认为这取决于您的JAX-
RS实现,但这是泽西对其@Produces批注的解释:https ://jersey.java.net/documentation/latest/jaxrs-
resources.html#d0e1809

基本上,由客户端确定服务器应吐出的内容类型。如果客户端支持多个内容类型,则有时可以为给定方法指定要返回的内容类型的优先级:

@Produces({"application/xml; qs=0.9", "application/json"})

在上面的示例中,如果客户端(同时)接受“ application / xml”和“ application / json”,则服务器始终发送“
application / json”,因为“ application / xml”的质量因数较低。



 类似资料:
  • 问题内容: 我想问问为什么Java注释使用了这么多…我知道它们在例如jpa中替换了xml配置,但是为什么要使用这种配置呢?考虑这段代码: 现在,当我尝试使用的persist方法将其置于持久性上下文中时,尝试持久化实例会遇到运行时错误(最好是出现编译错误)。对我来说,有一个明显的解决方案,强制实体实现某种无方法接口,而不是使用@Annotations。但这在框架设计人员中并不流行,此解决方案的缺点是

  • 问题内容: 因此,我一直在浏览有关创建REST API的文章。其中一些建议使用所有类型的HTTP请求:like 。我们将创建例如 index.php 并以这种方式编写API: 好的,理所当然-我对Web服务还不太了解。但是,通过常规或(包含方法名称和所有参数)接受 JSON 对象,然后也以JSON进行响应,会不会更容易。我们可以轻松地通过PHP进行序列化/反序列化,并且无需处理不同的HTTP请求方

  • 问题内容: 在使用CDI时,我可以使用注释创建一个生产者方法,以调用该方法来选择由注释注入实现接口的bean 。 现在,我正在使用Spring,但没有找到任何类似的东西。使用批注时,我需要使用什么来获得与CDI中批注相同的结果? 问题答案: 您正在寻找: @Bean是方法级别的注释,是XML 元素的直接类似物。批注支持所提供的大多数属性,例如:初始化方法,销毁方法,自动装配,延迟初始化,依赖项检查

  • 问题内容: 我知道使用执行程序而不是ThreadGroup的当前做法: 通常首选的处理线程的方法 从线程等捕获异常… 但是,这样 的ThreadGroup 固有的 缺陷是 什么(我听过对该类的模糊批评)? 感谢您的回答。 PS。这似乎无法回答这个问题。 问题答案: 这在《有效的Java第二版》中进行了解释。,项目73。 最初将线程组设想为一种出于安全目的隔离小程序的机制。他们从来没有真正兑现过这个

  • 问题内容: Java具有关键字。为什么JPA拥有而不是简单地使用已经存在的java关键字? 问题答案: Java的关键字用于表示不对字段进行序列化,而JPA的注释用于表示不将字段保留在数据库中,即它们的语义不同。