REST 구성
구성 요소 | 표현방법 | 내용 |
Resource | HTTP URI | 자원을 정의 |
Verb | HTTP Method | 자원에 대한 행위를 정의 |
Representations | HTTP Message Pay Load | 자원에 대한 행위의 내용을 정의 |
ex)
Resource : /wedul/member
Verb : HTTP POST
Representations :
{
"id" : "wedul"
}
REST 특성
1. 유니폼 인터페이스
-> HTTP 표준만 따르면 어떠한 기술이든 사용가능 (HTTP/JSON, HTTP XML)
2. 무상태성 (STATELESS)
3. 캐시 가능
-> 웹 캐시, CD을 이용한 캐싱 가능
4. 자체 표현 구조 (SELF-DESCRIPTIVENESS)
-> API 내용만 보고도 별도의 문서 없이도 쉽게 이해가 가능하다.
REST 설계 패턴
- API URL만 보고도 무슨 API인지 쉽게 직간적으로
- URL을 길게 만들지 말고 2 depth 수준 까지만
> /dogs/
> /dogs/uki
- 대상은 명사가 되야한다.
ex) getDogs (X), /dogs/ (O)
- 단수보다는 복수형을 사용
/dog (X), /dogs (O)
HTTP Response code
- 총 70개있는 것 중에 권장하는 Response code 사용
> 200 : 성공
> 400 : Bad Request - Field validation 실패
> 401 : 인증, 인가 실패
> 404 : 해당 리소스 찾을 수 없음
> 500 : Internal Error - 서버에러
에러처리
-> 상세 내용은 HTTP body에 표현해 주어야 한다.
-> Error Stack이 노출되지 않도록 조심해야한다.
{
"error" : 200,
"message" : "massage sending failed",
"detail" : "Id Logouted"
}
API 인증방식
1. API 키 방식
-> API 호출할때, API KEY를 보내는 방식
-> 키가 한번 뚫리면 문제가 발생
2. API 토큰 방식
-> ID, PASSWORD를 사용하여 일정 기간 유효한 API 토큰을 리턴하고, 매 호출마다 토큰 사용
2.1) HTTP BASIC AUTH
=> ID, PASSWORD를 직접 보낸다.
2.2) DIGEST ACCESS AUTHENTICATION
=> 패스워드를 네트워크를 통해서 보내지 않고, 클라이언트와 서버에서 공통적인 키를 이용해서 패스
워드에 대한 해쉬를 생성하고 이를 비교하는 방식 (프로젝트에서 경험해 봄)
3. 사용자 인증 방식
1.1) 3자 인증 방식
=> 계정 정보를 다른 서비스가 가지고 진행
1.2) 클라이언트 인증
=> 서비스가 여러 클라이언트에 의해 사용될때, 클라이언트별 접근 토큰을 발급하여 인증을 강화
'web > Web' 카테고리의 다른 글
Java 이모티콘 찾기, 제거 등등 (1) | 2022.10.03 |
---|---|
css 파일 Uncaught SyntaxError: Invalid or unexpected token 에러 (2) | 2018.05.27 |
Http 상태 코드 별 상태 (0) | 2016.12.27 |
longpolling 방식 소개 및 comet 방식과의 차이점 설명 (0) | 2016.12.22 |
서블릿 개념 설명 및 주요 메서드 소개 (0) | 2016.12.22 |