[Spring] 17. REST API&Ajax

Hyeongmin Jung·2023년 8월 29일
0

Spring

목록 보기
16/17

🐣 JSON

✔️ Java Script Object Notation: 자바 스크립트 객체 표기법
✔️ XML을 이용하여 데이터 교환을 하면 복잡하고 data보다 Tag가 더 많기 때문에 간단한 json 사용

{속성명1:속성값1, 속성명2:속성값2,⋯}

✅ 객체배열 [{속성명:속성값,⋯}, {속성명:속성값,⋯},⋯]
✅ Map {키1:{속성명:속성값,⋯}, 키2:{속성명:속성값,⋯},⋯]

stringify() & parse()

✔️ JS객체를 서버로 전송하려면, 직렬화가 필요
(직렬화: 데이터를 문자열로 변환)
✔️ 서버가 보낸 데이터(JSON문자열)를 JS객체로 변활할때, 역직렬화 필요

JSON.stringify() : 객체 → JSON문자열 (직렬화)
JSON.parse() : JSON문자열 → 객체 (역직렬화)


🐣 Ajax

✔️ Asynchronous javascript and Xml (요즘은 xml 대신 JSON을 주로 사용)
✔️ 비동기 통신으로 데이터를 주고 받기 위한 기술
✔️ 웹페이지 전체(data+UI)가 아닌 일부(data)만 업데이트 가능

jQuery를 이용한 Ajax

Ajax 요청과 응답과정

pom.xml : jackson

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.17.1</version>
</dependency>

⚫ requestBody & responseBody

✔️ json 기반 메세지 전달에 유용

requestBody : http 요청 body → 자바객체,
자바객체로 변환하여 매핑된 메소드 파라미터로 전달
responseBody : 자바객체 → http 요청 body

@PostMapping("/send")
@ResponseBody
public Person test(@RequestBody Person p) {
	System.out.println("p = " + p);
    p.setName("ABC");
    p.setAge(p.getAge() + 10);

    return p;
}

⚫ @RestController

✔️ 각각 @ResponseBody 붙이는 것과 같은 기능, 클래스에 @Controller 대신 @RestController을 붙여 사용 가능

@RestController
public class SimpleRestController {
    @PostMapping("/send")
    public Person test(@RequestBody Person p) {
        System.out.println("p = " + p);
        p.setName("ABC");
        p.setAge(p.getAge() + 10);

        return p;
    }
}

🐣 REST

✔️ Roy Fielding이 제안한 웹서비스 디자인 아키텍쳐 접근 방식
✔️ 프로토콜에 독립적이며, 주로 HTTP를 사용하여 구현
✔️ 리소스 중심의 API 디자인
HTTP메서드로 수행할 작업을 정의
리소스 부분은 심플하게⬅️유지보수 용이, 가독성 좋음

[HTTP 메서드] : GET : Read | POST : Write
PUT : 파일 upload | DELETE : 파일 삭제 | PATCH : 일부 수정

REST API

✔️ Representation State Tansfer API : REST규약을 준수하는 API

⏺️ RESTful API 설계
✔️ URI를 명사 위주로 단순하게 표현하고 리소스에 대한 동작은 HTTP 메서드가 담당


참고) 자바의 정석 | 남궁성과 끝까지 간다

0개의 댓글