ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 09 REST_API와 Ajax
    Spring/03 MyBatis로 게시판 만들기 2023. 7. 25. 18:27
    반응형

    REST_APIAjax

    1) JSON이란?

    - Java Script Object Notation - 자바 스크립트 객체 표기법

    >> XML이 복잡하고 실제 데이터보다 Tag가 더 많다 좀더 간단하게 가자 JSON

     

    { 속성명1 : 속성값1, 속성명2: 속성값2, ...} - 자바스크립트에서 객체 표기

     

    [{속성명: 속성값, ...}, {속성명:속성값, ...}, ...] // 객체배열

    {1:{속성명:속성값, ...}, 2:{속성명:속성값, ...}, ...} // Map

     

    2) stringify( )parse( )

    - JS를 객체를 서버로 전송하려면, 직렬화(문자열로 변환)가 필요

    객체를 생성하면 메모리에 저장됨

    Q. 생성된 객체를 저장하려면?

    값을 순서대로 하나씩 저장하는 수 밖에 없다 (직렬화)

    데이터를 Text로 변환, (저장과 전송이 가능해진다)

    ex) HTTP - Text 기반 프로토콜(요청과 응답을 Text로 주고 받음)

     

    - 서버가 보낸 데이터(JSON문자열)JS객체로 변환할 때, 역직렬화가 필요

    >> ~ify~화 한다

     

    >>자바스크립트의 객체를 만드는 방법 리터럴 생산자

    >> 자바스크립트에서는 상속은 없어 Prototype을 물려받는다( ex) toString( )사용가능 )

     

    >> 동적으로 멤버에 추가 삭제가 가능하다 .hp가 생기면 hp를 하나 생성해준다

    >> dir( ) 사용하면 객체가 가지고 있는 멤버를 확인할 수 있다

     

    >> 자바스크립트에서 JSON.parse( ) 전송할 때는 문자열로 변환 JSON.stringify( )

     

     

    3) Ajax?

    - Asynchronous javascript and XML - 요즘은 JSON을 주로 사용

    비동기 통신으로 데이터를 주고 받기 위한 기술

    웹페이지 전체(data+UI)가 아닌 일부(data)만 업데이트 가능

    동기 방식 : 요청(호출)을 하면 서버가 처리하고 응답 올 때까지 기다려야 한다

                     (처리되는 동안 중간에 다른 작업이 불가능)

    비동기 방식 : 요청(호출)을 해놓고 응답까지 기다릴 필요가 없어진다

                        (요청 해놓고 다른 작업이 가능하다)

    비동기 방식의 단점 : 처리가 언제 끝난는지 알 수 없다

    해결책으로 Callback함수를 이용

     

     

    4) JQuery가 제공하는 Ajax

    >> 자바스크립트와 다른 라이브러리로도 이용가능하다

    >> 의 응답이 올 때까지 기다리는게 아니라 을 호출한다

     

     

    4-1) 실습

    >> pom.xml 설치

     

     

    ajax.jsp

     

    SimpleRestController.java (com.fastcampus.ch4.controller.SimpleRestController)

     

    Person.java (com.fastcampus.ch4.controller.Person)

    >> getter and setter , 생상자, toString 생성

     

     

    결과 확인

    >> the request is sent의 메시지 확인을 누르고 나면, 들어온 값을 확인 할 수 있다

    >> 비동기 방식을 확인 할 수 있다

     

     

    5) Ajax요청과 응답과정

    >> jackson-databindpom.xml 설치한 라이브러리

    >> jackson-databind가 하는 일은 문자열 자바객체로 변환 또는 자바 객체 문자열로 변환

    >> 결과적으로는 자바스크립트 객체를 자바 객체로 변환 (또는 반대 과정)

     

    @RequestBody - body에 있는 내용을 자바 객체로 알려준다

    @Responsbody - 응답할 때 자바 객체를 body에 알려준다

    >> MVC에서는 return의 반환 타입이 뷰이름이지만, Ajax요청에서는 반환타입이 객체이다

     

     

    6) @ResponseBody 대신, @RestController 사용가능

    >> 메서드가 여러개 일 경우 @RestController 사용

    >> @RestController는 각각의 메서드에 @ResponseBody를 붙여준다

    >> @RestControllerviewsreturn하지 않는다

         따라서 위에 노락박스는 viewsreturn하지 않아 사용할 수 없다

     

     

    7) REST?

    - Roy Fielding이 제안한 웹서비스 디자인 아키텍쳐 접근 방식

    - 프로토콜에 독립적이며, 주로 HTTP를 사용해서 구현

    - 리소스 중심의 API 디자인 - HTTP메서드로 수행할 작업을 정의

    >> GET방식 POST방식 PUT(업데이트)방식 PATCH(수정)방식 DELETE방식 등....

         여러가지 메서드 방식 있다

    >> 여러 가지 메서드 방식을 활용하되 리소스 부분은 심플하게 하자는 약속

     

     

    8) REST API?

    Representational State Tansfer API - REST 규약을 준수하는 API

     

    REST is a set of architectural constraints, not a protocol or a standard. API developers can implement REST in a variety of ways.

     

    API (Application Programming Interface)

    An API is a set of definitions and protocols for building and integrating application software. It’s sometimes referred to as a contract between an information provider and an information userestablishing the content required from the consumer (the call) and the content required by the producer (the response).

     

     

    9) RESTful API 설계

    >> REST API 설계 X read, write, remove, modify 동사가 존재한다

     

    >> REST API 설계 O read, write, remove, modify 동사가 존재하지 않는다 (댓글 구현 예정)

    >> 동사가 URI에서 담당하지 않고 HTTP메서드에서 담당할 수 있도록 설계한다

    >> URI에는 명사만 남긴다

     

     

    반응형
Designed by Tistory.