2017-12-29 14 views
0

Ich entwickle einen Rest api Webservice mit jHipster, ich möchte Feldfilter wie Facebook Graph API machen (Beispiel: http://myjhipster_web_service.com/api/user?fields=id,username) Das Problem ist, ich weiß nicht, wie man jackson Json Serialisierung tun, so dass ich beschlossen, zu machen ein ResponseBodyAdvice und serialisieren Daten von mir selbst, und für Leistungsprobleme möchte ich Jackson Serialisierung deaktivieren, so dass die Antwort nicht zweimal serialisiert werden. meine Frage ist, wie nur Jackson Antwort Serialisierung in Jhipster deaktivieren? Und gibt es eine andere Lösung für die Arbeit?JHipster Spring Wie kann ich Jackson JSer Serialisierung deaktivieren?

Antwort

0

Erste Idee

Sie können Ihre Anfrage (die ausgewählten Felder) und das Ergebnis (der Benutzer/s) in der REST-Controller wickeln, z.B. in einer bestimmten Klasse wie GraphResponse.

Wenn Ihr Mapping im REST-Controller GraphResponse zurückgibt, versucht Jackson das zu serialisieren.

So können Sie Ihre eigenen seriablizer für diese Klasse hinzufügen:

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 
} 

}

Sie entweder den Serializer über die JacksonConfiguration registrieren oder eine Anmerkung mit wie:

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

Zweite Idee

Sie können ändern, wie die Beans/Entitäten serialisiert werden, indem Sie Ihre eigene BeanSerializerModifier hinzufügen, die dafür verantwortlich ist (AFAIR).

Dritte Idee

Sie Ihre eigenen HttpMessageConverter hinzufügen können, die das Objekt behandelt zu http-Ausgang und http-Eingang Umwandlung zu widersprechen. Da Jackson ausgeführt wird, weil ein MappingJackson2HttpMessageConverter automatisch registriert ist, können Sie alternativ die MappingJackson2HttpMessageConverter außer Kraft setzen und etwas implementieren der Serialisierung zu drehen ...

Vierte Idee

In einigen Projekten haben wir GraphQL (http://graphql.org/) , wo Sie Graphabfragen verwenden können, was wirklich mächtig ist und die ganze Filterung usw. für Sie basierend auf den Entitäten durchführt. Es gibt auch einen Spring-Boot-Starter für GraphQL, so dass Sie dies sehr einfach zu einem jhipster-Projekt hinzufügen können:

Verwandte Themen