| 항목 | 내용 |
|---|---|
| 클라이언트 | 웹에서 정보에 액세스하려는 사용자 |
| 리소스 | 다양한 애플리케이션이 클라이언트에게 제공하는 정보 |
| 서버 | 클라이언트에 리소스를 제공하는 시스템 |
| 인증 | 신원을 확인하는 프로세스 RESTful 웹 서비스는 응답을 보내기 전에 먼저 요청을 인증해야 함 |
REST(Representational State Transfer)는 API 작동 방식에 대한 조건을 부과하는 소프트웨어 아키텍처
HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고, HTTP Method(POST, GET, PUT, DELETE)를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것
자원 기반의 구조(ROA, Resource Oriented Architecture) 설계의 중심에 Resource가 있고, HTTP Method를 통해 Resource를 처리하도록 설계된 아키텍처
API(Application Programming Interface)는 다른 소프트웨어 시스템과 통신하기 위해 따라야 하는 규칙을 정의
RESTful API는 REST 아키텍처 스타일을 따르는 API로 두 컴퓨터 시스템이 인터넷을 통해 정보를 안전하게 교환하기 위해 사용하는 인터페이스
(대부분 비즈니스 애플리케이션은 다른 내부 애플리케이션 및 서드 파티 애플리케이션과 통신하기 위함)
| 항목 | 내용 |
|---|---|
| 기본 인증 | 클라이언트가 요청 헤더에 사용자 이름과 암호를 넣어 전송 (base64 인코딩) |
| 전달자 인증 | 토큰 전달자에 대한 액세스 제어를 제공하는 프로세스(bearer) 전달자 토큰은 서버가 로그인 요청에 대한 응답으로 생성하는 암호화된 문자열 클라이언트가 리소스에 액세스하기 위해 요청 헤더에 토큰을 넣어 전송 |
| API 키 | 서버가 생성한 고유 값을 최초 클라이언트에 할당하여 고유한 API 키를 사용하여 본인을 검증하는 프로세스 (클라이언트가 키를 전송하므로 네트워크 도난에 취약) |
| OAuth | 모든 시스템에 대해 암호와 토큰을 결합하는 매우 안전한 액세스 방식 |
| 분류 | 항목 | 내용 |
|---|---|---|
| URI | 고유 리소스 식별자(Uniform Resource Identifier) | |
| Method | GET | 리소스 조회 |
| POST | 리소스 생성 | |
| PUT | 리소스 수정 | |
| DELETE | 리소스 삭제 | |
| HTTP Header | Data | HTTP 메소드가 성공적으로 작동하기 위한 데이터 |
| Parameter | 작업 수행을 위해 서버에 제공하는 정보 1) URL 세부정보를 지정하는 경로 2) 리소스에 대한 추가 정보 요청하는 쿼리 3) 클라이언트를 빠르게 인증하는 쿠키 |
| 분류 | 항목 | 내용 |
|---|---|---|
| Status Code | 200 | 일반 성공 응답 |
| 201 | POST 메소드 성공 응답 | |
| 400 | 서버가 처리할 수 없는 잘못된 요청 | |
| 404 | 리소스를 찾을 수 없음 | |
| Body | 리소스 표현(XML, JSON) | |
| Header | 응답에 대한 헤더 또는 메타데이터 |
HTTP 상태 코드를 자세히 알고 싶다면?
https://hahahoho5915.tistory.com/55
URI에 동사와 대문자 대신 명사와 소문자 사용
Bad Ex) klasis.com/Running
Good Ex) klasis.com/run
URI에 계층 간 구분자를 슬래시(/)로 사용하되 마지막에는 포함하지 않음
Bad Ex) klasis.com/houses/rooms/
Good Ex) klasis.com/houses/rooms
URI에 언더바(_) 대신 하이폰(-) 사용
파일 확장자에 URI를 포함하지 않음
Bad Ex) klasis.com/photo.jpg
Good Ex) klasis.com/photo
행위를 포함하지 않음
Bad Ex) klasis.com/show-article/1
Good Ex) klasis.com/article/1
URI의 Document 이름에 단수 명사 사용
URI의 Collection 이름에 복수 명사 사용
URI의 Store 이름에 복수 명사 사용
URI에 HTTP Method 사용하지 않음
Bad Ex) GET klasis.com/delete/article/1
Good Ex) DELETE klasis.com/article/1