API

승환·2025년 1월 27일

📌 API

웹에서 프론트엔드와 벡엔드를 나눠서 개발하기 전에 필수적으로 알아야할 개념이라고 생각해서 정리한다.


API(Application Programming Interface)

애플리케이션간의 통신 방법을 정의하는 것을 의미한다.
주로 요청과 응답으로 이루어져 있으며, 클라이언트와 서버 관계에서 웹 API또는 RestAPI로 많이 사용된다.

예전에는 템플릿 언어로 구성된 화면에서 파라미터를 통해 화면으로 보내는 View방식을 사용했지만 요즘은 벡단과 프론트단으로 나눠서 하기 때문에, 프론트단에서 백단으로 데이터를 Requset하고 백단에서는 요청받은 데이터를 가공해서 프론트단으로 Response해야한다.

이때 서로 규칙을 정해야하는데, 이게 바로 API이다.

이런 방식으로 웹이 통신하게 된다.


UI

사용자가 브라우저에서 접하는 화면이다. 사용자의 행위에 의해 이벤트가 발생하고, 서버로 요청이 들어간다. 전통적인 방식은 HTML을 요청해서 화면을 구성하지만 SPA(Vue, Angular, React)는 클라이언트에서 렌더링하고 API를 호출하게 된다.


웹애플리케이션

HTML,Css,JAVAScript등이 여기에 속한다. 서버 렌더링인 경우 JSP를 이용해서 REST API를 호출하고 벡엔드로부터 전달받은 JSON데이터로 구성한다. 클라이언트 렌더링에서는 웹애플리케이션 서버 내부 파일시스템 대신 버킷 등의 오브젝트 저장소를 사용해서 Static Web을 구성한다.


📌 REST API

Rest를 기반으로 만들어진 API이다.

REST(Representational State Transfer)

자원의 이름을 구분해서 해당 자원의 상태를 주고 받는 모든 것
1. HTTP URI를 통해 자원을 명시
2. HTTP Method(POST,GET등)을 통해
3. 해당 자원에 대한 CRUD Operation을 적용한다.

쉽게 말하면 HTTP 프로토콜을 통해 수정사항을 DB에 반영할 수 있게되는 것이다.

REST API응답에 포함된 요소

1) 상태 표시줄
여러가지 상태 코드가 반환되는데 각 코드는 의미를 담고있다.

  • 200 OK 일반 성공 응답
  • 201 Created POST 성공 응답
  • 400 BadRequest 서버가 처리할 수 없는 잘못된 요청
  • 500 Internal Server Error 서버에 문제가 있음
  • 503 Service Unavailable 서버가 요청을 처리할 준비가 되지 않았음

이외에도 여러가지 코드가 있다.

2) 메시지 본문
헤더에 포함된 내용을 기반으로 적절한 표현형식을 선택하여 리소스를 표현한다.
주로 JSON형식을 반환한다.

3) 헤더
응답에 대한 헤더 또는 메타데이터를 포함한다. 서버, 인코딩, 날짜 콘텐츠 유형같은 정보를 포함한다.

REST API인증

RESTful 웹서비스는 응답을 보내기 전에 먼저 요청을 인증해야한다.
1) HTTP인증
기본 : 클라이언트는 요청 헤더에 사용자 이름과 암호를 넣어 전송한다.
전달자(Bearer)인증 : 토큰 전달자에 대한 엑세스 제어를 제공한다. 일반적으로 전달자 토큰은 서버가 로그인 요청에 대한 응답으로 생성하는 암호화 된 문자열이다. 주로 JWT를 사용한다.

2) API키
REST API를 인증하기 위한 또다른 옵션이다. 서버는 고유하게 생성된 값을 최초 클라이언트에 할당하고 클아이언트는 리소스에 엑세스 하려고 할 때마다 고유한 API키를 사용한다.

3) OAuth 모든 시스템에 대한 안전한 로그인 프로세스를 보장하기 위해 암호와 토큰을 결합한다. 나중에 한번 다시 정리할거긴 한데, OAuth2.0에 대한 글을 작성할 것이다.

profile
왕초보 학부생

0개의 댓글