[SPRING] Spring Data로 특정 항목을 볼 때만 특정 필드를 노출합니까?
SPRINGSpring Data로 특정 항목을 볼 때만 특정 필드를 노출합니까?
저는 현재 스프링 부트를 사용하여 mongodb 백엔드가있는 REST API를 작성하고 있습니다. 항목 목록이 아닌 특정 항목을 볼 때만 특정 필드를 공개 할 수 있습니까?
예를 들어 사용자 목록을 볼 때 전자 메일, 이름 및 ID 만 표시하려면 다음과 같이하십시오.
/ {endpoint} / 사용자 확보
{
"_embedded": {
"users": [
{
"email": "some_email@gmail.com",
"name": "some name",
"id": "57420b2a0d31bb6cef4ee8e9"
},
{
"email": "some_other_email@gmail.com",
"name": "some other name",
"id": "57420f340d31cd8a1f74a84e"
}
]
}
추가 입력란을 표시합니다 (예 : 주소 및 성별, 특정 사용자를 검색 할 때 :
/ {endpoint} / 사용자 수 / 57420f340d31cd8a1f74a84e 가져 오기
{
"email": "some_other_email@gmail.com",
"name": "some other name",
"address": "1234 foo street"
"gender": "female"
"id": "57420f340d31cd8a1f74a84e"
}
주어진 사용자 클래스 :
public class User {
private String id;
private String email;
private String address;
private String name;
private String gender;
...
}
해결법
-
==============================
1.Spring Data REST를 사용할 때 특별히 이것을 위해 설계된 것이 있습니다. 투영 및 발췌의 개념이 있으며,이를 반환 할 대상과 방법을 지정할 수 있습니다.
Spring Data REST를 사용할 때 특별히 이것을 위해 설계된 것이 있습니다. 투영 및 발췌의 개념이 있으며,이를 반환 할 대상과 방법을 지정할 수 있습니다.
먼저 원하는 필드 만 포함 할 인터페이스를 만듭니다.
@Projection(name="personSummary", types={Person.class}) public interface PersonSummary { String getEmail(); String getId(); String getName(); }
그런 다음 PersonRepository에서 이것을 사용할 기본값으로 추가하십시오 (콜렉션을 리턴하는 메소드에만 적용됨).
@RepositoryRestResource(excerptProjection = PersonSummary.class) public interface PersonRepository extends CrudRepository<Person, String> {}
그런 다음 컬렉션에 대한 쿼리를 수행 할 때 프로젝션에 지정된 필드 만 가져올 수 있으며 단일 인스턴스를 가져올 때 전체 개체를 가져옵니다.
-
==============================
2.저장소의 find 메소드에 @Query 어노테이션을 추가하고 fields 매개 변수를 지정해야합니다.
저장소의 find 메소드에 @Query 어노테이션을 추가하고 fields 매개 변수를 지정해야합니다.
public interface PersonRepository extends MongoRepository<Person, String> @Query(value="{ 'firstname' : ?0 }", fields="{ 'firstname' : 1, 'lastname' : 1}") List<Person> findByThePersonsFirstname(String firstname); }
참조 : http://docs.spring.io/spring-data/mongodb/docs/current/reference/html/#mongodb.repositories.queries.json-based
from https://stackoverflow.com/questions/37449040/only-expose-certain-fields-when-viewing-specific-item-with-spring-data by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] java.lang.NoClassDefFoundError : com / google / gson / gson (0) | 2019.05.05 |
---|---|
[SPRING] Spring-Batch에서 ItemReader로 라인을 건너 뛰는 방법? (0) | 2019.05.05 |
[SPRING] 동일한 애플리케이션에서 스프링 보안 양식 로그인 및 oauth2 (0) | 2019.05.05 |
[SPRING] 최대 절전 모드에서 예외를 throw하지 않는 DB 제약 위반 (0) | 2019.05.04 |
[SPRING] spring-data-couchbase를 사용하고 있지만 메서드 이름의 쿼리 작성이 작동하지 않습니다. (0) | 2019.05.04 |