Java에서 REST 기반 서비스를 구현하고 있지만 각 GET 호출에 대해 JSON에서 전체 엔터티를 반환하고 싶지는 않습니다.Java - REST에서 반환 할 필드 지정
GET>http://mydomain.com/movie/id=1?fields=title,year
:
은 무엇 내가 지금해야하는 것은 내가 ID로 지정된 영화의 전체 JSON 표현을 얻을 그러나 나는 이런 식으로 뭔가를하고 싶으면 할 수있는 위의 코드와이
@GET
@Path("movie/{id}")
@Produces({"application/json"})
public Movie find(@PathParam("id") Integer id) {
return getEntityManager().find(Movie.class, id);
}
입니다
여기에 동영상의 id
과 JSON 형식의 응답으로 반환하려는 필드를 전달합니다.
이 작업을 수행하는 간단한 방법이나 alraedy가 수행하는 기존 라이브러리가 있습니까?
는 편집 : 예 AJ 내가 같은 예를 찾아 결국하지만 난 그들이
@ApplicationPath("/")
public class SelectableEntityFilteringApplication extends ResourceConfig {
public SelectableEntityFilteringApplication() {
// Register all resources present under the package.
packages("org.glassfish.jersey.examples.entityfiltering.selectable");
// Register entity-filtering selectable feature.
register(SelectableEntityFilteringFeature.class);
// Configure MOXy Json provider.
register(new MoxyJsonConfig().setFormattedOutput(true).resolver());
property(SelectableEntityFilteringFeature.QUERY_PARAM_NAME, "select");
}
}
필요한 모든 구성을 가진 파일이 그 예에서를 작동하게 기운 다
하지만 J2EE를 사용하여 내 IDE에서 생성 된 파일은 다음과 같습니다.
@javax.ws.rs.ApplicationPath("webresources")
public class ApplicationConfig extends Application {
@Override
public Set<Class<?>> getClasses() {
//register(SelectableEntityFilteringFeature.class);
Set<Class<?>> resources = new java.util.HashSet<>();
addRestResourceClasses(resources);
return resources;
}
클래스를 등록 할 수 없으면 ResourceConfig를 실제로 확장해야합니까? Doesnt는 javax.ws.rs.core.Application과 호환되는 것으로 보입니다.
가장 쉬운 방법은 JSON 라이브러리를 사용하여 직접 응답을 구축하는 것입니다; json 객체 나 문자열을 반환하면 출력을 완전히 제어 할 수 있습니다. – Dave
사실,하지만 많은 REST 서비스를 구축해야 할 것입니다. 또한 엔티티가 너무 많습니다. 모든 항목에 대해 그렇게 할 경우, 생각하지 않아도되는 일을하는 동안 많은 시간을 소비하게됩니다. 쓰다. 나를 위해 무엇이 정말로 anoying하고있다 :) 그러나 최후의 수단으로서 thats 옵션 – Miksel
흠, 당신은 기본적으로 여기 URI 템플릿의 반대를 원한다. .. URI 템플릿으로 당신은 http://mydomain.com/movie/id를 할 수있다. = {id}? fields = {fields}''id'는 스칼라이고'fields'는 배열이지만 URI 템플릿은 _expansion_을 정의하지만 그들은 구문 분석을 정의하지 않습니다 ... (자세한 내용은 RFC 6570 참조) – fge