ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 웹 MVC 8부 ~ 11부
    Spring 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
킹수빈닷컴