Enunciate 可以将 Java 接口作为数据类型吗?
Can Enunciate take Java Interface as data types?
我想使用 Enunciate 自动生成我的 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);
}
IAuthentication
是一个接口,必须保持一个。这是因为我使用了注入,无法预测authenticate()
方法返回的确切类型。然而,CLogin
是一个 class,这没关系,因为它是方法 authenticate()
接受的类型的特化。
现在我的问题是只有请求主体是 Enunciate 生成的文档中的文档,而不是响应主体。在寻找潜在的数据类型时,Enunciate 似乎忽略了 Java 接口,并显示以下消息:
[DEBUG] [ENUNCIATE] com.example.IAuthentication isn't a potential Jackson type because it's not a class or an enum.
我的接口使用 JAXB 注释进行注释。它们可以从源路径访问。
@XmlRootElement
public interface IAuthentication {
/* methods signatures */
}
有没有办法告诉 Enunciate Java 接口作为数据类型是可以的,必须考虑在内。
附录
此方法 JSON 输出的真实示例:
{
"token": "imec51lpb72lgsdrb0ftvfomt3",
"auth_key": ""
}
根据@stoicflame 对 this issue 的回答,Enunciate 2.7 版似乎不支持 Java 接口作为数据类型。
我求助于使用 Java文档标签 @returnWrapped
。另一种选择是特定于 Enunciate 的注释 @TypeHint
。 JavaDoc 标签让我省去了外部运行时依赖性。
编辑:
Enunciate 版本 2.9.0 现在 supports documenting interface types。
我想使用 Enunciate 自动生成我的 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);
}
IAuthentication
是一个接口,必须保持一个。这是因为我使用了注入,无法预测authenticate()
方法返回的确切类型。然而,CLogin
是一个 class,这没关系,因为它是方法 authenticate()
接受的类型的特化。
现在我的问题是只有请求主体是 Enunciate 生成的文档中的文档,而不是响应主体。在寻找潜在的数据类型时,Enunciate 似乎忽略了 Java 接口,并显示以下消息:
[DEBUG] [ENUNCIATE] com.example.IAuthentication isn't a potential Jackson type because it's not a class or an enum.
我的接口使用 JAXB 注释进行注释。它们可以从源路径访问。
@XmlRootElement
public interface IAuthentication {
/* methods signatures */
}
有没有办法告诉 Enunciate Java 接口作为数据类型是可以的,必须考虑在内。
附录
此方法 JSON 输出的真实示例:
{
"token": "imec51lpb72lgsdrb0ftvfomt3",
"auth_key": ""
}
根据@stoicflame 对 this issue 的回答,Enunciate 2.7 版似乎不支持 Java 接口作为数据类型。
我求助于使用 Java文档标签 @returnWrapped
。另一种选择是特定于 Enunciate 的注释 @TypeHint
。 JavaDoc 标签让我省去了外部运行时依赖性。
编辑: Enunciate 版本 2.9.0 现在 supports documenting interface types。