2017-12-29 50 views
0

jHipster로 나머지 API 웹 서비스를 개발 중입니다. 페이 스북 그래프 API (예 : http://myjhipster_web_service.com/api/user?fields=id,username)와 같은 필드 필터를 만들고 싶습니다. 문제는 잭슨 (Json) 직렬화를 수행하는 방법을 모르므로 작성해야합니다. ResponseBodyAdvice를 사용하고 데이터를 자신의 코드로 으로 직렬화하고 성능 문제에 대해서는 응답을 직렬화하지 않도록 Jackson 직렬화를 비활성화해야합니다. Jhipster에서 jackson 응답 직렬화 만 비활성화하는 방법은 내 질문입니까? 작업을 수행 할 또 다른 해결책이 있습니까?JHipster Spring 어떻게 jackson json serialization을 비활성화 할 수 있습니까?

답변

0

먼저 생각

당신은 REST 컨트롤러에 요청 (선택한 필드)과 결과 (사용자/S)를 포장 할 수 있습니다, 예를 들어, GraphResponse과 같은 특정 클래스입니다.

REST 컨트롤러의 매핑이 GraphResponse을 반환하면 Jackson은이를 직렬화하려고 시도합니다.

public class GraphResponseSerializer extends JsonSerializer<GraphResponse> { 

@Override 
public void serialize(GraphResponse response, JsonGenerator jsonGenerator, 
    SerializerProvider serializerProvider) throws IOException, JsonProcessingException { 
    // use jsonGenerator to write the JSON-stuff 
} 

} 당신은 같은 주석을 사용하여 JacksonConfiguration 또는를 통해 그 시리얼을 등록 할 수 있습니다

:

그래서, 당신은 그 클래스에 대한 자신 seriablizer을 추가 할 수 있습니다

@JsonSerialize(using = GraphResponseSerializer.class) 
public class GraphResponse { 
    // setter getter for "fields" 
    // setter getter for the actual response-object 
} 

두 번째 아이디어

콩/엔티티의 직렬화 방식을 수정할 수 있습니다 (자신의 BeanSerializerModifier, 즉 AFAIR).

당신은 변환 객체에 대한 HTTP 출력 및 HTTP 입력에 개체를 처리하는 자신의 HttpMessageConverter을 추가 할 수 있습니다

세 번째 아이디어. 잭슨이 실행되기 때문에 MappingJackson2HttpMessageConverter가 자동으로 등록되기 때문에, 당신은 다른 방법 ... 우리가 GraphQL을 사용하는 일부 프로젝트에서

넷째 생각

(http://graphql.org/을)를 MappingJackson2HttpMessageConverter을 무시하고 직렬화의 설정하는 뭔가를 구현할 수 여기서 그래프 쿼리를 사용할 수 있습니다. 그래프 쿼리는 엔티티 기반의 강력한 필터링 기능을 제공합니다. GraphQL을위한 스프링 부트 스타터가있어서, jipster 프로젝트에 이것을 쉽게 추가 할 수 있습니다.