当前位置: 首页 > 知识库问答 >
问题:

发音可以采用Java接口作为数据类型吗?

艾成益
2023-03-14

我想使用 Enarticulateciate 自动生成我的 REST API 的文档。

JAX-RS注释代码如下:

@POST
@Produces({MediaType.APPLICATION_JSON, MediaType.TEXT_XML})
@Consumes({MediaType.APPLICATION_JSON, MediaType.TEXT_XML})
public IAuthentication login(CLogin aLogin) throws XException {
    return this.pManager.authenticate(aLogin);
}

< code>IAuthentication是一个接口,它必须保持不变。这是因为我使用了注入,我无法预测方法< code>authenticate()返回的确切类型。然而,< code>CLogin是一个类,这是可以的,因为它是方法< code>authenticate()接受的类型的专门化。

现在我的问题是,只有请求主体是Enunciate生成的文档中的文档,而不是响应主体。在寻找潜在的数据类型时,Enunciate似乎忽略了Java接口,并显示以下消息:

[调试][ENUNCIATE] com.example.IAuthentication 不是潜在的 Jackson 类型,因为它不是一个类或枚举。

我的接口使用JAXB注释进行注释。它们可以从源路径访问。

@XmlRootElement
public interface IAuthentication {
    /* methods signatures */
}

有没有办法告诉 Enarticulateciate Java 接口作为数据类型是可以的,必须考虑在内。

补遗

此方法的JSON输出的真实示例:

{
    "token": "imec51lpb72lgsdrb0ftvfomt3",
    "auth_key": ""
}

共有1个答案

慕乐语
2023-03-14

根据@stoic火焰对这个问题的回答,2.7版的发音似乎不支持Java接口作为数据类型。

我求助于使用JavaDoc标签< code>@returnWrapped。另一个选项是发音特定的注释< code>@TypeHint。JavaDoc标签使我免受外部运行时依赖。

编辑:Enunciate版本2.9.0现在支持记录接口类型。

 类似资料:
  • 问题内容: 有没有简单的方法可以采用现有的Java / scala数据类型和API接口并生成相应的.thrift文件?使用Thrift生成 服务器 数据结构会过度侵入,因为它会导致以下后果: 我无法注释我的数据结构(例如,用于XML,JSON,休眠持久性等) 这种模式与其他想要拥有或需要修改我的源文件的序列化框架相冲突。 结果,它看起来像是节俭,迫使自己成为服务器的专有持久性格式,除非,也就是说,

  • 我想拆分我的验证器的声明和实现,与Spring boot环境中的这个问题非常相似。看起来好像是我让它几乎起作用了。我看到我的验证器实际上是由Spring验证调用的,但在执行验证后,Hibernate会抛出一个异常: 这是因为是一个接口(如预期)。 我已经这样配置了Spring(这是一个不同问题的答案): 我的自定义验证器: 所以它试图通过验证器名称找到一个Spring bean。所以我有一个验证器

  • 当我继续我的在线教程,我遇到了这一课。我有一个接口和两个实现该接口的类。 null 这是因为所有的类都实现了接口Payve[]吗? 如果接口是在顶层层次结构中定义的,那么是否总是可以创建实现该接口的所有类的对象?

  • 问题内容: 我正在学习Scala,并好奇是否有可能: 创建一个在Scala中实现Java接口的对象 将对象编译成类文件并将其打包 使用Java中的对象 我想在Scala中实现自定义Lucene查询解析器,并能够让其他人从Java应用程序访问它。 问题答案: 我假设“对象”实际上是“类”。无论如何,答案是肯定的,您可以这样做。如果您希望所有这些都在同一项目中,则需要利用Scala / Java联合编

  • 问题内容: 我想让一个函数在Swift中接受任何数字(Int,Float,Double,…) 不使用NSNumber 问题答案: 更新: 以下答案原则上仍然适用,但是Swift 4完成了数字协议的重新设计,因此通常不需要添加自己的数字协议。在构建自己的系统之前,请查看标准库的数字协议。 在Swift中,这实际上是不可能的。为此,您需要创建一个新协议,并使用您将在泛型函数中使用的任何方法和运算符进行

  • 在学习静态编程语言中的泛型时,我在一本书中读到了以下内容: 通常,如果类具有将其用作返回类型的函数,或者如果类具有该类型的val属性,则类或接口泛型类型可以以out作为前缀。但是,如果类具有该泛型类型的函数参数或var属性,则不能使用out。 我理解规则所说的,但我很乐意(通过示例)理解没有此规则可能会有什么(即在声明泛型类/接口时使用out时没有约束),以及为什么返回类型可以来自类型t,而类/接