본문 바로가기

java/스프링인액션

[6.3]

전통적 웹 사이트

MPA

Multi Page Application

서버에서 ---> 새로운 페이지 전송 --> 매번!

SPA

Single Page Application

전체 페이지를 --> 하나의 페이지에 담아 ---> 동적으로 화면 바꾸기

페이지 변경 안일어남. 그렇게만 보임.

데이터만 ajax로 받아옴. == CSR (Client Side Rendering)

껍데기는 그대로 있음

참고: https://www.huskyhoochu.com/what-is-spa/

 

 

 

 

 

@RequestMapping
@GetMapping

 

@RequestMapping 다목적 요청 처리
HTTP 메서드가 method 속성 지정
 
@GetMapping HTTP GET 요청  
     
     

 

@Controller
뷰로 보여줄 값을 반환함
즉: html로 데이터 넘기나봄 ㅋㅋ
@RestController
컨트롤러의 모든 HTTP 요청 처리 메서드에서
HTTP 응답 몸체에 직접 쓰이는 값을 반환한다. --> 스프링에게 알려준다.
뷰를 통해 HTML이 변환되지 않고. 
직접 HTTP 응답으로 브라우저에게 전달한다.
즉: 데이터만 넘길때 쓰나봄 ㅋㅋ
클래스의 모든 요청 처리 메서드에
@ResponseBody 어노테이션을 지정해야
@RestController와 같은 결과를 얻을 수 있다.
1) 어노테이션이 지정된 클래스를
스프링의 컴포넌트 검색으로 찾을 수 있다.
  뷰를 통해서 HTML을 변환하지 않음
직접 HTTP 응답으로 브라우저에게 전달함

 

 

 

 

 

produces

produces="application/json"

요청 Accept 헤더에

application/json이 포함된 요청만!을 처리한다.

application/json JSON
text/html  XML

 

 

응답 결과 JSON

produces 속성 값은 String 배열로 저장.

 

다른 controller에서도 요청을 처리할 수 있도록

text/html 속성을 추가함. --XML로 출력

 

 

@CrossOrigin

 

@CrossOrigin(origin="*")   --> CORS 적용

서로 다른 도메인간의 요청을 허용한다.

 

API와 별도의 도메인(호스트와 포트) 

api를 사용하지 못하게 웹브라우저가 막는다.

 

 

 

@GetMapping("/{id}")

타코 id로 특정 타코만 가져오는 엔드포인트

플레이스 홀더 변수: {id}

 

(@PathVariable("id") Long id)

id를 인자로 받는 메서드 작성.

 

(@RequestBody Taco taco)

요청 몸체의 JSON 데이터 --> Taco 객체로 변환 ---> taco 변수에 바인딩 됨.

이거 안쓰면: 매개변수가 곧바로 Taco 객체와 바인딩 되는 것으로 -->  스프링MVC가  간주함.

 

@ResponseStatus(HttpStatus.CREATED)

해당 요청이 성공적, 요청 결과로 리소스 생성

201 상태가 client에게 전달된다.

 

 

 

 

데이터 수정

get : 서버로부터 클라이언트로 데이터 전송~

<->

put: 클라이언트로 부터 서버로 데이터를 보냄. 데이터 전체 수정

patch : 데이터 일부분을 변경

 

@PutMapping("/{orderId}")

@PatchMapping(path="/{orderId}", consumes="application/json")

 

데이터 삭제

@DeleteMapping("/{orderId}")

@ResponseStatus(code=HttpStatus.NO_CONTENT)

주문이 존재하면 -> 삭제

없으면 -> error

EmptyResultDataAccessException

 

 

NO_CONTENT 204

 

삭제는 데이터를 return 할 필요 없음.

 

 

하이퍼미디어

REST API

 

HATEOAS 하테오아스?

Hypermedia As

The Engine

Of Application

 

api로부터 반환되는 데이터에 

해당 리소스와 관련된 하이퍼링크들이 포함된다.

href: "주소"가 더 붙음

JSON 응답에 하이퍼링크를 포함시킬 때 주로 사용되는 형식.

_link 속성 : client가 관련 api를 수행할 수 있는 하이퍼링크를 포함한다.

식자재 모두.. 그들 리소스를 참조하는 self링크를 가진다.

리스트 전체는 자신을 참조하는 recents 링크를 갖는다.

 

 

하이퍼링크 추가하기

 

'java > 스프링인액션' 카테고리의 다른 글

[8.3] 카프카 사용하기  (0) 2021.12.04
[6.3] 스프링 데이터 REST  (0) 2021.11.27
챕터4 스프링 시큐리티  (0) 2021.11.20
[챕터 3] 데이터로 작업하기 72~112p  (0) 2021.11.13
1주차  (0) 2021.11.07