22 Ocak 2018 Pazartesi

JAX-RS @Provider Anotasyonu

Giriş
Şu satırı dahil ederiz.
import javax.ws.rs.ext.Provider;
Örnek
Elimizde bir SpringBoot Rest noktası olsun.
@RestController
@RequestMapping("/api/susu")
public class SusuController {

  @RequestMapping(path = "/{id}", method = RequestMethod.GET)
  public Susu hello(String id) {
    Susu susu = new Susu();
    susu.setDate(LocalDate.now());
    susu.setName("Peter Pan");
    return susu;
  }
}
Rest noktasının döndürdüğü cevabı sarmalamak için şöyle yaparız.
@Provider
@Priority(1)
public class JsonStructureInterceptor implements WriterInterceptor {

  private final JsonResponseBuilder jsonResponseBuilder = new JsonResponseBuilder();

  @Override
  public void aroundWriteTo(WriterInterceptorContext context)
    throws IOException, WebApplicationException {

    Susu s = context.getEntity(); // read the JAX-RS response entity

    JsonObject jsonObjectWithStructure = jsonResponseBuilder.toResponse(s); // wrap it

    // add it back into the JAX-RS context
    context.setEntity(jsonObjectWithStructure);
    context.proceed();
  }
}

Hiç yorum yok:

Yorum Gönder