복붙노트

[SPRING] REST API에 대한 JSON 응답에 필드를 제한?

SPRING

REST API에 대한 JSON 응답에 필드를 제한?

나는 봄과 자바를 사용하여 REST 기반 서비스를 구현하고있다. 나도 모바일, 아이 패드 및 웹을위한 개발 개발자의 세트가있다. 나는 콩을 고려

Class User{
private String Name;
private Integer id;
private String photoURL;
private ArrayList<String> ProjectName;
private ArrayList<String> TechnologyList;
private ArrayList<String> InterestList;

//Getters and setters

}

웹 개발자는 전체 필드와 모바일 개발자를 필요로하는 동안 아이 패드가 모바일 및 웹 사이에 뭔가를 필요로하는 반면 단지에서 두 개의 필드가 필요합니다.

내가 파서로 잭슨을 사용하고 있기 때문에, 컨트롤러에 요청하는 동안 내가 필요로하는 모든 데이터를 지정하고 다른 사람을 피할 수있는 방법이있다. 예를 들어 나는 GET 요청 등을 고려

GET>http://somedomain.com/users?filter=name,id,photoUrl

어느 날 같은 JSON 구조 뭔가를 반환

{
"name":"My Name",
"id":32434,
"photoUrl":"/sss/photo.jpg"
}

사람이 좀 더 필드에 요청하는 경우 SAMEWAY, 그들은 필터링 할 수 있습니다. 내 API는 모두 일반적이고 유용한 유지되도록 나에게이 작업을 수행 할 수있는 방법을 알려 주시기 바랍니다.

해결법

  1. ==============================

    1.당신은 당신이 원하는 것을 얻을 수 있지만, 일부 추가 작업이 필요하다. 나는 당신에게 두 가지 솔루션을 제공 할 수 있습니다.

    당신은 당신이 원하는 것을 얻을 수 있지만, 일부 추가 작업이 필요하다. 나는 당신에게 두 가지 솔루션을 제공 할 수 있습니다.

    단순히 맵에 요구되는 모든 속성을 넣어.

    잭슨은 직렬화되거나 무시되는 속성을 지정 필터를 설정할 수 있습니다.

    FilterProvider filter = new SimpleFilterProvider().addFilter("myFilter",
       SimpleBeanPropertyFilter.filterOutAllExcept(requestedProperties));
    
    String json = objectMapper.writer(filter).writeValueAsString(value);
    

    그런 다음 객체의 직접 대신 JSON 문자열을 반환 할 수 있습니다.

    두 솔루션을 위해 당신은 이상적으로 작업을 수행하는 클래스를 작성합니다. 그러나 당신은 당신뿐만 아니라 당신의 자신의 메시지 컨버터를 쓸 수 있다고한다면. 당신은 예를 들어, MappingJackson2HttpMessageConverter을 확장하고 사용자의 요구에 맞게 writeInternal 방법을 덮어 쓸 수 있습니다. 그것은 당신이 당신의 컨트롤러를 변경할 필요가 없습니다 큰 장점이있다.

  2. ==============================

    2.똑 바른 솔루션은 스레드 로컬 저장소에서 직렬화해야 필드 이름을 가져온 다음 이름은 그 맥락에서 제시 필드 만 직렬화합니다 사용자 정의 잭슨 JSON 시리얼 라이저를 구현하는 것입니다. 반면를 들어, 컨트롤러는 URL에서 허용 된 모든 필드 이름을 잡을 수 있으며, 스레드 로컬 컨텍스트에 저장합니다. 도움이 되었기를 바랍니다.

    똑 바른 솔루션은 스레드 로컬 저장소에서 직렬화해야 필드 이름을 가져온 다음 이름은 그 맥락에서 제시 필드 만 직렬화합니다 사용자 정의 잭슨 JSON 시리얼 라이저를 구현하는 것입니다. 반면를 들어, 컨트롤러는 URL에서 허용 된 모든 필드 이름을 잡을 수 있으며, 스레드 로컬 컨텍스트에 저장합니다. 도움이 되었기를 바랍니다.

  3. from https://stackoverflow.com/questions/20802032/limiting-fields-in-json-response-for-rest-api by cc-by-sa and MIT license