티스토리 뷰
Spring/Spring REST
Spring Boot REST : Data REST 사용 시 특정 Http Method 메소드 제어
Korean Eagle 2020. 5. 28. 02:12728x90
1. Data Rest는 Rest Controller를 자동으로 생성해 주는 편리한 모듈이다.
2. 하지만 종종 자동 생성 기능 중에 읽기, 삭제가 안 되는 것을 원할 때도 있는데, 3가지 방법으로 구현할 수 있다.
2-1 Data Rest의 자동 생성을 사용하지 않고 그냥 수동으로 개발하는 방법
2-2 RestConfig에서 설정하는 방법
2-3 스프링 Security를 적용하는 방법
3. 여기서는 두 번째 방법을 보여준다.
3-1 Repository에 대한 REST 설정을 RestConfig 파일에서 작성한다.
3-2 원하지 않는 기능을 묶어서 그 기능을 사용하지 않게 하는 함수를 콜백으로 제공하면 된다.
3-3. 보안이나 웹설정처럼 Rest 설정 클래스를 만들고, 동일한 방식으로 RepositoryRestConfigurer를 구현한다.
3-3-1 아래처럼 configureRepostioryRestConfiguration을 오버라이딩하면서 설정자를 받아와 처리한다.
3-3-2 노출설정 메소드에 어떤 entity를 다룰지를 지정하고,
3-3-3 하나의 객체에 대해 설정할지 묶음에 대해서 할지 정할 수 있다.
3-3-4 노출설정 메소드에는 filter를 받는다. 즉 어떤 메소드를 사용할지 거르는 내용 필요하다.
package pe.pilseong.shoppingweb.conifg;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.rest.core.config.RepositoryRestConfiguration;
import org.springframework.data.rest.webmvc.config.RepositoryRestConfigurer;
import org.springframework.http.HttpMethod;
import pe.pilseong.shoppingweb.entity.Product;
import pe.pilseong.shoppingweb.entity.ProductCategory;
@Configuration
public class RestConfig implements RepositoryRestConfigurer {
@Override
public void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) {
HttpMethod[] unsupportedActions = {HttpMethod.PUT, HttpMethod.POST, HttpMethod.DELETE};
config.getExposureConfiguration()
.forDomainType(Product.class)
.withItemExposure((metadata, HttpMethods) -> HttpMethods.disable(unsupportedActions))
.withCollectionExposure((metadata, httpMethods) -> httpMethods.disable(unsupportedActions));
config.getExposureConfiguration()
.forDomainType(ProductCategory.class)
.withItemExposure((metadata, HttpMethods) -> HttpMethods.disable(unsupportedActions))
.withCollectionExposure((metadata, httpMethods) -> httpMethods.disable(unsupportedActions));
}
}
4. 위의 설정대로 하면 읽기만 가능한 REST endpoint가 만들어진다.
728x90
'Spring > Spring REST' 카테고리의 다른 글
Spring REST : Swagger2 설정하기 (0) | 2020.09.04 |
---|---|
Spring REST : MapStuct (0) | 2020.09.02 |
Spring Boot : Data REST - CRUD 구현 (0) | 2020.05.23 |
Spring Boot : REST + Spring Data JPA CRUD 구현 (0) | 2020.05.23 |
Spring Boot : REST + JPA CRUD 구현 (0) | 2020.05.23 |
댓글
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
- 도커 개발환경 참고
- AWS ARN 구조
- Immuability에 관한 설명
- 자바스크립트 멀티 비동기 함수 호출 참고
- WSDL 참고
- SOAP 컨슈머 참고
- MySql dump 사용법
- AWS Lambda with Addon
- NFC 드라이버 linux 설치
- electron IPC
- mifare classic 강의
- go module 관련 상세한 정보
- C 메모리 찍어보기
- C++ Addon 마이그레이션
- JAX WS Header 관련 stackoverflow
- SOAP Custom Header 설정 참고
- SOAP Custom Header
- SOAP BindingProvider
- dispatcher 사용하여 설정
- vagrant kvm으로 사용하기
- git fork, pull request to the …
- vagrant libvirt bridge network
- python, js의 async, await의 차이
- go JSON struct 생성
- Netflix Kinesis 활용 분석
- docker credential problem
- private subnet에서 outbound IP 확…
- 안드로이드 coroutine
- kotlin with, apply, also 등
- 안드로이드 초기로딩이 안되는 경우
- navigation 데이터 보내기
- 레이스 컨디션 navController
- raylib
TAG
- WebMvc
- one-to-many
- XML
- 설정하기
- hibernate
- Validation
- jsp
- 설정
- login
- 스프링
- 스프링부트
- mapping
- 하이버네이트
- Security
- spring boot
- one-to-one
- Angular
- RestTemplate
- 로그인
- Many-To-Many
- Spring Security
- 외부파일
- Spring
- Rest
- 자바
- 상속
- form
- crud
- MYSQL
- 매핑
250x250