프로젝트를 진행시 - RESTful API 이점, 작동원리

fejigu·2023년 1월 15일
1

CS

목록 보기
2/3
post-thumbnail


💥어려웠던 백엔드, 프론트엔드 서버 간 통신

👉🏻 첫번째 진행했던 팀 프로젝트를 회고해보자면, 아무래도 처음하는 백엔드 서버와 프론트엔드 서버 간의 통신이 어려웠다.

하지만 프로젝트에서 REST API 방법를 사용해서 그래도 백엔드 서버와 프론트엔드 서버 간의 통신이 헷갈리지 않을 수 있었던 것 같다.

이처럼 REST API 방법을 사용하면 주소와 메서드만 보고 요청의 내용을 알아볼 수 있다는 장점이 있다. 그래서 개발자간의 소통도 쉽고 개발 시 혼선도 덜 빚어진 것 같다.

그래서 금일은 REST API에 대해 다시 정리하며 학습해보고자 한다.


🔎 RESTful API란?

👉🏻 RESTful API는 두 컴퓨터 시스템이 인터네스을 통해 정보를 안전하게 교환하하기 위해 사용하는 인터페이스이다.

RESTful API는 안전하고 신뢰할 수 있으며 효율적인 소프트웨어 통신 표준을 따르므로 이러한 정보 교환을 지원한다.

ex) 월간 급여 명세서 생성 - 내부 계정 시스템이 데이터를 고객의 뱅킹 시스템과 공유


🔎 REST란

REST란 API 작동 방식에 대한 조건을 부과하는 소프트웨어 아키텍처이다.

REST는 처음에 인터넷과 같은 복잡한 네트워크에서 통신을 관리하기 위한 지침으로 만들어졌다.


🔎 RESTful API 이점

RESTful API 이점은 아래와 같이 크게 3가지로 정리할 수 있다.

👉🏻 확장성
REST API를 구현하는 시스템은 REST가 클라이언트-서버 상호 작용을 최적화하기 때문에 효율적으로 크기 조정할 수 있다.

유연성
RESTful 웹 서비스는 완전한 클라이언트-서버 분리를 지원한다. 각 부분이 독립적으로 발전할 수 있도록 다양한 서버 구성 요소를 단순화하고 분리한다.

독립성
REST API는 사용되는 기술과 독립적이다. API 설계에 영향을 주지 않고 다양한 프로그래밍 언어로 클라이언트 및 서버 애플리케이션을 모두 작성할 수 있다.


🔎 RESTful API 작동원리

1) 클라이언트가 서버에 요청을 전송한다.
클라이언트가 API 문서에 따라 서버가 이해하는 방식으로 요청 형식을 지정합니다.

2) 서버가 클라이언트를 인증하고 해당 요청을 수행할 수 있는 권한이 클라이언트에 있는지 확인한다.

3) 서버가 요청을 수신하고 내부적으로 처리한다.

4) 서버가 클라이언트에 응답을 반환한다.
응답에는 요청이 성공했는지 여부를 클라이언트에 알려주는 정보가 포함된다. 응답에는 클라이언트가 요청한 모든 정보도 포함된다.


🔎 일반적인 4가지 HTTP 메서드

👉🏻 개발자는 종종 HTTP를 사용하여 RESTful API를 구현한다.
HTTP 메서드는 리소스에 수행해야 하는 작업을 서버에 알려주는데, 아래 4가지의 HTTP 메서드가 일반적이다.

1) GET
클라이언트는 GET을 사용하여 서버의 지정된 URL에 있는 리소스에 액세스한다.

2) POST
클라이언트는 POST를 사용하여 서버에 데이터를 전송한다. 여기에는 요청과 함께 데이터 표현이 포함된다.

3) PUT
클라이언트는 PUT을 사용하여 서버의 기존 리소스를 업데이트한다. POST와 달리, PUT 요청을 여러 번 전송해도 결과는 동일하다.

4) DELETE
클라이언트는 DELETE 요청을 사용하여 리소스를 제거한다. DELETE 요청은 서버 상태를 변경할 수 있다.


🔎 RESTful API 인증 방법

👉🏻RESTful API 인증 방법에는 여러가지가 있지만 그 중에서, 실제로 본인이 프로젝트에서 사용한 OAuth에 대해 정리하고자 한다.

+ OAuth

OAuth는 모든 시스템에 대해 매우 안전한 로그인 액세스를 보장하기 위해 암호와 토큰을 결합한다. 서버는 먼저 암호를 요청한 다음 권한 부여 프로세스를 완료하기 위해 추가 토큰을 요청한다.

실제로 프리젝트 스택오버플로우 클론 코딩 시 소셜로그인을OAuth 2.0를 사용하여 기능 구현을 하였다.


profile
console.log(frontendjigu( ☕️, 📱); // true

0개의 댓글