Как сделать так, чтобы Enunciate отображал мой тип данных как структурированный JSON (а не как "пользовательский")?
У меня есть этот простой сервис, который отображает параметр ID, завернутый в объект JSON:
@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, показывает тип данных сервиса как "пользовательский". Можно ли заставить Enunciate выложить более подробное объяснение возвращаемого типа, например, представление JSON?
3 ответа
У меня точно такая же проблема с простым веб-сервисом REST Jersey.
Вот аннотации моего возвращаемого объекта (не более):
@XmlRootElement (name = "OReponseInitialiser") @XmlAccessorType (XmlAccessType.PUBLIC_MEMBER) @XmlType (name = "OReponseInitialiser") открытый класс OReponseInitialiser
И декларация веб-сервиса:
@СООБЩЕНИЕ @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) @Path ("инициализатор") открытый инициализатор OReponseInitialiser(@Context HttpServletRequest pRequete, ...) создает исключение OException
Я строю документацию с задачей муравья
<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>
Если вы измените тип возврата на javax.ws.rs.core.Response
затем в документации должен быть указан тип данных в формате JSON.
Вы должны будете немного изменить свой метод как:
...
return Response.status(Status.OK).entity(j).build();
Добавить аннотацию в класс Job
@javax.xml.bind.annotation.XmlRootElement
Без этой аннотации enunciate будет отображать DTO как "custom" или "file"