Spring/REST

학습 // Spring // REST // Controller

문스코딩 2018. 8. 20. 18:06
업데이트 :: 2018.08.16



@RestController

@RestController
@RequestMapping("books")
public class BookRestController() {

}

CORS

  • CORS : Cross-Origin Resource Sharing
    • AJAX(XMLHttpRequest)를 사용할 때 다른 도메인의 서버리소스에 접근하기 위한 메커니즘

CORS 옵션

  • allowedOrigins
    • 접근을 허용할 오리진(도메인) 지정
    • 기본값 : '*' (모두이용가능)
  • allowdMethods
    • 접근을 허용할 HTTP 메서드 지정
    • 기본값 : '*' (모두이용가능)
  • allowHeaders
    • 접근을 허용할 헤더를 지정
    • preflight 요청이 들어올때 이 값으로 점검
    • preflight 요청에 대한 응답으로 Access-Control-Allow-Headers 헤더에 설정
    • 기본값 : '*' (모두이용가능)
  • exposedHeaders
    • 허용할 데이터의 화이트리스트(WhiteList)를 지정
    • 지정한 헤더가 응답의 Access-Control-Expose-Headers 해더에 설정
  • allowCredentials
    • 인증정보(쿠기나 Basic인증)를 취급할지 여부를 결정
    • true를 지정하면 Access-Control-Allow-Credentials 해더에 설정
    • 기본값 : true (인증정보취급)
  • maxAge
    • 클라이언트가 preflight 요청에 대한 응답을 캐시할 시간(초단위)을 지정
    • preflight 요청에 대한 응답의 Access-Control-Max-Age 해더에 설정
    • 기본값 : 1800 (30분)

URI조립

  • UriComponentsBuilder

@RequestMapping(method=RequestMethod.POST)
public ResponseEntity<Void> createBook(
       @Validated @RequestBody BookResource newResource,
       UriComponentsBuilder uriBuilder
) {
   BookResource newBook = new BookResource();
   newBook.setName(newResource.getName());
   newBook.setPublishedDate(newResource.getPublishedDate());
   BookResource createBook = bookService.create(newBook);

   // == URI조립 (UriComponentsBuilder방식) ==
   URI resourceUri = uriBuilder.path("books/{bookId}")
           .buildAndExpand(createBook.getBookId()).encode().toUri();

   return ResponseEntity.created(resourceUri).build();
}
  • MvcUriComponentBuilder

@RequestMapping(method=RequestMethod.POST)
public ResponseEntity<Void> createBook(
       @Validated @RequestBody BookResource newResource,
       UriComponentsBuilder uriBuilder
) {
   BookResource newBook = new BookResource();
   newBook.setName(newResource.getName());
   newBook.setPublishedDate(newResource.getPublishedDate());
   BookResource createBook = bookService.create(newBook);

   // == URI조립 (UriComponentsBuilder방식) ==
   URI resourceUri = MvcUriComponentsBuilder.relativeTo(uriBuilder)
    .withMethodCall(on(BooksRestController.class))
    .getBook(createBook.getBookId()).build().encode().toUri();

   return ResponseEntity.created(resourceUri).build();
}

Created by MoonsCoding

e-mail :: jm921106@gmail.com

반응형

'Spring > REST' 카테고리의 다른 글

구현 // Spring // REST // REST API Toturial  (0) 2018.08.20
학습 // Spring // REST // Exception  (0) 2018.08.20
학습 // Spring // REST // Resource  (0) 2018.08.20
학습 // Spring // REST  (0) 2018.08.20