인프런에서 백기선님의 스프링부트 개념과 활용 강의를 듣고, 개인적으로 공부하며 핵심만 정리한 글입니다.
HATEOAS
해당 내용은 스킵.
이후 REST API 를 공부할 때 제대로 보자.
스프링 부트에서 지원하는 HATEOAS 적용 방법만 간략히 적어둔다.
@GetMapping("/hello")
public EntityModel<Hello> hello() {
Hello hello = new Hello();
hello.setPrefix("Hey, ");
hello.setName("heumsi");
EntityModel<Hello> helloResource = new EntityModel<>(hello);
helloResource.add(linkTo(methodOn(SampleController.class).hello()).withSelfRel());
return helloResource;
}
// 응답 결과
{
"prefix":"Hey, ",
"name":"heumsi",
"_links":{
"self":{
"href":"http://localhost/hello"
}
}
}
CORS
1) SOP와 CORS
- Orgin
- 다음 세가지를 조합한게 하나의 Origin 이다.
- URI 스키마 (http, https)
- 호스트 이름 (localhost 등)
- 포트 (8080, 3306)
- ex. http://localhost:8080
- 다음 세가지를 조합한게 하나의 Origin 이다.
- SOP
- Same Origin Policy 의 약자로, 같은 Orgin 에서만 리소스 요청이 가능하게한 정책이다.
- 예를 들어, http://localhost:8080 에 실행중인 앱에서 http://localhost:8000 서버로 리소스를 요청을 할 수 없다.
- 기본적으로 SOP 정책을 따른다.
- COR
- Cross Origin Policy 의 약자로, 다른 Origin 에서도 리소스 요청이 가능하게한 정책이다.
- 서버를 더 개방적으로 열어둔 것이라고 할 수 있다.
2) CORS 사용법
CORS 가 필요한 경우는 다른 Origin 의 요청을 허용해야하는 상황이다.
스프링부트에서는 @CrossOrigin(origin = "다른 origin")
을 활용하면 된다.
@RestController
public class SampleController {
@CrossOrigin(origins = "http://localhost:8000") // COR 적용
@GetMapping("/hello")
public String hello() {
return "Hello";
}
}
컨트롤러 단위로 설정하지 않고, 한 파일에서 전역적으로 관리하고 싶으면 WebMvcConfigurer
를 구현한 WebConfig
클래스에서 addCorsMappings()
를 다음과 같이 오버라이딩 해주면 된다.
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/hello")
.allowedOrigins("http://localhost:8000");
// 모든 요청에 허용하고 싶은 경우
registry.addMapping("/**")
.allowedOrigins("http://localhost:8000");
}
}
'더 나은 엔지니어가 되기 위해 > 지금은 안쓰는 자바' 카테고리의 다른 글
[스프링 부트 개념과 활용] 데이터 2. JPA (0) | 2020.02.08 |
---|---|
[스프링 부트 개념과 활용] 데이터 1. DB 연동 (0) | 2020.02.07 |
[스프링 부트 개념과 활용] 웹 MVC 설정 3. ExceptionHandler (0) | 2020.02.06 |
[스프링 부트 개념과 활용] 웹 MVC 설정 2. 정적 리소스와 웹 JAR (0) | 2020.02.05 |
[스프링 부트 개념과 활용] 웹 MVC 설정 1. MessageConverters (0) | 2020.02.04 |