본문 바로가기

배운 거/C.S

Rest API?

REST(Representational State Transfer)

 

로이 필딩(Roy Fielding)이 자신의 2000년 박사 학위 논문에 정의한 네트워크 소프트웨어 아키텍처다.

쉽게 말하면 '네트워크에서 통신을 구성할 때 이런 구조로 설계하라는 지침' 정도로 볼 수 있다.

 

현재 온라인 네트워크는 Web이 대부분이므로 보편화된 Web API 기준이라고 볼 수 있다.

 

 

조건

1. Client - Server와의 분리. 서로 의존성이 없어야한다.

2. Stateless 상태의 정보가 따로 저장되는 부분이 없어야한다.

이 부분은 디자인 패턴 중 MVC패턴에 잘 나와있다.

https://camof1ow.tistory.com/40

 

ORM-SQL-MVC?

ORM이란? ORM (Object-Relational Mapper) 객체 - 관계 맵퍼 객체가 테이블이 되도록 맵핑 시켜주는 프레임워크. Spring에서는 JPA-Hibernate가 하는 역할이라고 생각하면 될 꺼 같다. JAVA의 언어를 그대로 쓰면..

camof1ow.tistory.com

3. Cache - 네트워크 프로토콜 (ex. Http)에서 제공하는 캐싱 기능이 사용 가능해야 한다.

 

4. Uniform Interface 정형화된 상호작용 -  표준형식으로 데이터간 전송이 가능한 인터페이스를 사용하여야 한다.

HTTP에서는 URL과 응답코드, Request-response등이 사용된다.

 

5.Layerd System 계층화 된 구조 - 데이터가 직접적으로 노출되지 않게 하여야 하며, 정보의 검색이 계층구조로 분리되어야 한다.

 

6. Self-descriptiveness 자기기술성 -   Api에서 전송된 Data를 보기쉽게 표현되어야한다. ex) JSON, XML format

 

 


 

REST의 기본요소

 

1.method

 

  • 흔히 CRUD 부르는 HTTP method로 보면,
  • POST- GET - PUT - DELETE

 

2. Resource 

 

URI
의미
A 문서 조회
A 문서의 변경기록 조회
A 문서의 역링크 조회
A 문서 수정
A 문서의 표제어 수정
A 문서 삭제

 

3.Message

  • 메시지 포맷이 존재
    HTTP POST, http://myweb/users/
    {
    	"users" : {
    		"name" : "terry"
    	}
    }
    
  • : JSON, XML 과 같은 형태가 있음 (최근에는 JSON 을 씀)

 

  • Http response code(응답코드)
 
  • 200 OK: 성공적으로 처리했을 때 쓰인다. 가장 일반적으로 볼 수 있는 HTTP 상태.
  • 403 Forbidden(거부됨): 서버가 요청을 거부할 때 발생한다. 관리자가 해당 사용자를 차단했거나 서버에 index.html 이 없는 경우에도 발생할 수 있다. 혹은 권한이 없을 때(로그인 여부와는 무관하다)에도 발생한다.
  • 404 Not Found(찾을 수 없음): 찾는 리소스가 없다는 뜻으로, 가장 흔하게 볼 수 있는 오류 코드이다.
  • 500 Internal Server Error(내부 서버 오류): 서버에 오류가 발생해 작업을 수행할 수 없을 때 사용된다. 보통 설정이나 퍼미션 문제. 아니면 HTTP 요청을 통해 호출한 문서가 실제 HTML 문서가 아니라 JSP, PHP, 서블릿 등의 프로그램일 경우 그 프로그램이 동작하다 세미콜론을 빼먹는 등의 각종 에러로 비정상 종료를 하는 경우 이 응답코드를 보낸다.
  • 502 Bad Gateway(게이트웨이 불량): 게이트웨이가 연결된 서버로부터 잘못된 응답을 받았을 때 사용된다.
  • 503 Service Temporarily Unavailable(일시적으로 서비스를 이용할 수 없음): 서비스를 일시적으로 사용할 수 없을 때 사용된다. 주로 웹서버 등이 과부하로 다운되었을 때 볼 수 있다.
  • 504 Gateway Timeout(게이트웨이 시간초과): 게이트웨이가 연결된 서버로부터 응답을 받을 수 없었을 때 사용된다.

'배운 거 > C.S' 카테고리의 다른 글

Servelet?  (0) 2022.08.15
CORS ?  (0) 2022.08.14
Spring Bean이란?  (0) 2022.07.31
제어 반전 컨테이너-IoC란?  (0) 2022.07.31
의존성 주입 D.I 란?  (0) 2022.07.31