관리 메뉴

웹개발 블로그

[Rest API]⭐ Rest 아키텍처 본문

◆JSON/REST API

[Rest API]⭐ Rest 아키텍처

쿠키린 2024. 10. 15. 00:40

아키텍처 보다는 하나의 규약이라고 생각하자.

RestFUL

Rest : 관심은 데이터 처리 ( 스프링 3.0부터 REST 작업에 최고 수준 지원 제공 )

  •  JSON 포맷을 선호함.
  • http 프로토콜 사용
  • SOAP과는 다름
    •  SOAP  : 동작과 프로세싱에 집중
  •  HTTP의 우수성을 사용

서버에 요청을 하여 정보를 얻는데

요청의 주소(엔드포인트 : URL로 만들어)

RestFul 웹 서비스

핵심은 웹에 개발된 리소스 이용

  • Rest API : 소유자의 자원에 접근할 수 있는 API
  • Restfult하다 : Rest API를 제공하는 웹 서비

 

웹 서비스란? 

각 어플리케이션끼리 혹은 노드들끼리의 데이터 교환이다.

그 프로토콜을 WEB 표준을 통해 사용한다.

 

SOAP  VS REST (web이라는 플랫폼 위에서 동작하는건 동일하다.)

SOAP : xml포맷, 많은 어플리케이션에게 부담(엄격한 규약 가짐)

REST : json 포맷을 더 많이 씀(xml도 가능함), 더 간편한 대한 제공(요즘날

 

어플리케이션끼리 혹은 노드끼리 데이터 교환하는데

서로 서로 통신하는것을 서비스라고 한다.

통신 규약을 http 프로토콜을 사용한다는건 web service를 사용한다는거~

웹이 많이 보편화되면 각 노드들의 테이터 교환도 웹을 사용하게되었다.(웹서비스가 보화되었다는걸 알 수 있다)

 

2000년 초반에 표준화 작업을 xml로 했었는데 이걸 SOAP이라한다.

부족한 부분이 있다보니 더 좋은 오픈소스들이 생기게되고

Reat한 방식이 SOAP을 앞지르게 된다.

 

지금은 공식 표준인 SOAP보다는 RestFul한 서비스가 보편적으로 많이 사용된다.

 

HTTP - 전송규약 사용

- 인터넷 상에서 데이터를 주고 받기 위한 서버/클라이언트 구조의 프로토콜

- 지금은 각 노드들이 http를 사용하는 추세

(db는 drive프로토콜을 사용하지만,

그중 엘라스틱 서치(검색엔진으로 알려져있지만, db와 유사한 부분이 많음)는 http 프로토콜을 사용한다.)

requset/response 모델 사용

- 가벼움

 

HTTP 메시지

- 헤더와 바디로 나뉨.

 

HTTP Methods 

- 클라이언트 요청의 종류 : 서버는 이 정보를 통해 적당한 응답을 제공

- GET    : 자원요청, 일반 웹에서 주로 사용

- POST  : Entity를 포함한 자원 요청, 일반 웹에서 주로 사용

- PUT    : URL의 자원을 생성, RESTFUL에서 확장시켜서 많이 사용

- DELETE : URL의 자원을 삭제, RESTFUL에서 확장시켜서 많이 사용

- ETC..

 

 

대부분에 브라우저는 개발자 툴을 지원한다~

- HTTP 메시지 전송에 대한 정보를 제공한다.

 

웹의 특징

1. URL : 식별자로 사용

  • 컨텐츠에 접근하기 위한 위치 정보
  • 주로 요청을 하는 이유는 데이터를 얻기위해서
  • 요청의 주소는 엔드포인트라고 하는데 URL로 만들어져 있다.

 

URL 표기법을 웹에서 사용하고 있다,

URL을 통해 리소스 혹은 컨텐츠에 접근하는 방식을 웹서비스라 한다.

 

2. RESTFul 기반 웹 서비스

  • 2000년 이전에 http프로토콜을 개발한 박사가 웹의 장점을 최대한 활용할 수 있는 네트워크 기반의 아키텍처를 제안
  • 교환되는 데이터가 많아질 수록 빅데이터 이슈, 데이터 자체를 집중한 restful한 방식이 각광받게됨.
  • 데이터가 어플리케이션의 왕이됨.
  • 스프링 3.0부터 REST 작업에 대한 최고 수준의 자원을 제공.(3.1, 3.2, 4,0에도 계속됨.)
  • HTTP 프로토콜로 데이터를 전달하는 프레임워크
  • 핵심은 웹에 개발된 리소스 이용

API 데모 사이트

https://hyeonddobbi.tistory.com/403

 


 

REST란 무엇인가?

  • 2000년에 HTTP프로토콜 저자 중 한명인 박사 논문에 소개
  • 기존 웹 서비스들이 http를 적극적으로 활용하지 못한 문제를 해결하기 위해 제안됨.
  • http를 보다 http 답게 만들기 위한 방법론으로 보면됨
  • 철저히 Resource(데이터로 봐도 무방) 중심적 설계를 중요시함 = 철저하게 데이터 중심적이다.
    • HTTP메소드를 적극적으로 사용함.
    • Create - POST
    • Read - GET
    • Update - PUT
    • Delete - DELETE
      • HTTP 4가지 메소드를 용도에 맞게 사용

Spring - Web MVC에서의 RESTful지원

@Controller : class위에 붙히는 어노테이션, 스프링 컨테이너 위에 생성되는 컴포넌트로 등록하기 위해 지정함.

 @RequestMapping("/")  <- url을 기재(엔드포인트라고 함).

public class XXController { 

 

   @RequestMapping( value ="url", method=POST/GET/DELETE/PUT ) <= url은 반드시 method 방식이 적혀있어야 한다.

   @ResponseBody 사용 <= 응답되는 내용을 가공하지 않고 바로 리턴

   public String getMehod(){ ...}

}

 

레이어 시스템(스프링 특징 중 하나)

  • 컨트롤러 역할 : request 분석과 메소드를 매핑하고, 매핑한 메소드에서 응답을 수행함.  - @Controller
  • 실제수행(비즈니스로직)은 Service에서 함. - @Service
  • db작업은 dao 혹은 repository라고 불림. - @Repository 

🔽스프링 4.3 이후에 매핑하는 방식이 바뀜

@RestController : @Controller + @ResponseBody

@GetMapping : @ RequestMapping(value="/" , method=RequestMethod.GET)

 

 

'◆JSON > REST API' 카테고리의 다른 글

[RestFul,Spring] 예제  (0) 2024.10.24