티스토리 뷰

Spring

웹 MVC 8부 ~ 11부

kingsubin 2020. 7. 11. 20:06

8부 HtmlUnit


 

9부 ExceptionHandler

 

 

여기서 바로 AppError로 반환하는데 ResponseEntity<AppError>처럼 보낼 수 도 있다.

그리고 이 컨트롤러에만 관한게 아니라 전체를 다룰때는 @ControllerAdvice를 붙여서 사용한다.

@ControllerAdvice인 클래스를 작성하고 @ExceptionHandler에 관한 메소드를 모아서 사용한다.

 

- 커스텀 에러 페이지

resources/static/error/ 에러코드와 맞는이름으로 작성하면 자동으로 바인딩

ex) 404 -> 404 / 500번대의 에러 -> 5xx

 


 

10부 Spring HATEOAS

 

 

Rest API 를 만들때 서버가 리소스에 대한 정보를 제공할 때, 그 리소스와 연관이있는 링크 정보들까지 같이 제공하고,

클라이언트는 제공된 연관 링크정보를 바탕으로 리소스에 접근한다.

 

EntityModel<Hello> helloEntityModel = new EntityModel<>(hello);
helloEntityModel.add(linkTo(methodOn(SampleController.class).hello().withSelfRel());

- ObjectMapper 

hateoas 의존성 추가시, 스프링 부트가 많은것을 제공해주는데, 그 중 중요한 두가지가

ObjectMapper, LinkDiscovers이다.

 

ObjectMapper는 우리가 제공하는 리소스를 json으로 변환할 때 사용하는 인터페이스이다.

객체를 json으로 변환하거나, json을 객체로 변환시 사용하는 mapper이다.

따로 등록할 필요없이 주입받아 사용할 수 있다.

 

- LinkDiscovers

Xpath를 확장해서 만든 HATEOAS용 클라이언트 API이다.

rest api로 다른쪽 서버 api를 받았는데, 그게 hateoas를 지원한다면(링크 정보를 담고 있다면) 메소드를

이용해서 self에 해당하는 링크정보를 가져올 수 있다.

 

 

 


11부 CORS

 

 

SOP : 같은 Origin에서만 리소스 요청이 가능하게한 정책

ex) http://localhost:8080 에 실행중인 앱에서 https:localhost:18080 서버로 리소스 요청을 할 수 없다.

기본적으 SOP 를 따른다.

 

COR : 서로 다른 origin끼리 리소스를 공유할 수 있는 기능을 제공하는 표준

서버를 더 개방적으로 열어둔것 이라고 생각.

 

Origin : 3가지를 조합해서 나온 것이 하나의 origin이다.

- URL 스키마 (http, https)

- hostname (localhost 등)

- port (8080,18080 등)

 

원래 스프링 MVC에서 CORS 기술을 사용하려면, 여러가지 Bean 설정을 해야하지만,

스프링 부트는 그러한 설정을 자동으로 해준다.

 

 

 

CORS 를 사용하기 위해 @CrossOrign(origin = "다른 origin") 애노테이션 활용

 

컨트롤러 단위로 설정하지 않고, 한 파일에서 전역적으로 관리하고 싶으면 WebConfig 클래스에서

addCorsMappings()를 오버라이딩 해서 사용한다.

 

ex

8080 포트에서 보낸 값을 18080에서 원래 못받지만 CORS를 활용해서 받았다.

 

 

 


※참조

velog.io/@max9106/Spring-Boot-HATEOAS

dailyheumsi.tistory.com/180?category=874866

www.inflearn.com/course/스프링부트/lecture/13554

'Spring' 카테고리의 다른 글

데이터 3부 : MySQL  (0) 2020.07.12
데이터 2부 : 인메모리 데이터베이스  (0) 2020.07.12
웹 MVC - 1부 ~ 7부  (0) 2020.07.09
테스트  (0) 2020.07.08
로깅 - 1부, 2부  (0) 2020.07.08