我有这个简单的服务,它回显了一个包装在JSON对象中的ID参数:
@Path("job")
public class JobResource {
@GET
@Produces(MediaType.APPLICATION_JSON)
@Path("{id}")
public Job readById(@PathParam("id") long id) {
Job j = new Job();
j.id = id;
return j;
}
}
返回值的Job
类声明为:
public class Job {
public long id;
}
使用Enunciate生成的文档将服务的数据类型显示为“custom”。是否可以让Enunciate吐出更详细的返回类型说明,例如JSON表示?
答案 0 :(得分:0)
如果将返回类型更改为javax.ws.rs.core.Response
,则文档应将数据类型显示为JSON。
您需要稍微修改您的方法:
...
return Response.status(Status.OK).entity(j).build();
答案 1 :(得分:0)
向Job类添加注释
@javax.xml.bind.annotation.XmlRootElement
如果没有此注释,则enunciate会将DTO显示为" custom"或"文件"
答案 2 :(得分:0)
我使用简单的REST Jersey Web服务遇到了完全相同的问题。
以下是我返回的对象的注释(不再是):
@XmlRootElement(name = "OReponseInitialiser") @XmlAccessorType(XmlAccessType.PUBLIC_MEMBER) @XmlType (name="OReponseInitialiser") public class OReponseInitialiser
网络服务声明:
@POST @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) @Path ("initialiser") public OReponseInitialiser initialiser(@Context HttpServletRequest pRequete, ...) throws OException
我使用ant任务构建文档
<enunciate
basedir="${projet.repertoire}/src"
buildDir="${enunciate.working.dir}"
javacSourceVersion="1.8"
javacTargetVersion="1.8"
configFile="${projet.repertoire}/build_enunciate.xml"
>
<include name="**/*.java"/>
<classpath refid="compile.classpath"/>
<export artifactId="docs" destination="${docs.dir}"/>
</enunciate>