네트워크 아키텍처 원리(자원을 정의하고 자원에 대한 주소를 지정하는 방법)의 모음임
인터페이스 일관성 : 일관적인 인터페이스로 분리되어야 함
무상태(Stateless) : 각 요청 간 클라이언트의 콘텍스트가 서버에 저장되어서는 안됨
캐시 처리가능(Cacheable) : www에서와 같이 클라이언트는 응답을 캐싱할 수 있어야 함
계층화(Layered System) : 클라이언트는 보통 대상 서버에 직접 연결되었는지 또는 중간 서버를 통해 연결 되었는지를 알 수 없음, 중간 서버는 로드 밸런싱 기능이나 공유캐시 기능을 제공함으로써 시스템 규모 확장성을 향상시키는 데 유용함
Code on demand (optional) : 자바 애플릿이나 자바스크립트의 제공을 통해 서버가 클라이언트가 실행시킬 수 있는 로직을 전송하여 기능을 확장시킬 수 있음
클라이언트/서버 구조 : 아키텍처를 단순화시키고 작은 단위로 분리(decouple)함으로써 클라이언트-서버의 각 파트가 독립적으로 개선될 수 있도록 해줌
자원(Resource) : HTTP URI
자원에 대한 행위 : HTTP Method
자원에 대한 행위 내용 : HTTP Message Pay load
REST 원리를 따르는 API
서버에 요청을 보낼 때는 주소를 통해 요청의 내용을 표현
REST API( Representational State Transfer)
REST 원리를 따라 서버에 요청을 보낼 때는 HTTP 규약에 따른다.
GET
: 서버 자원을 가져오라고 할 때 사용
POST
: 서버에 자원을 새로 등록하고자 할 때 사용(또는 뭘 써야할 지 애매할 때)
PUT
: 서버의 자원을 요청에 들어있는 자원으로 치환하고자할 때 사용 (보통 전체 수정)
PATCH
: 서버 자원의 일부만 수정하고자 할 때 사용
DELETE
: 서버의 자원을 삭제하고자 할 때 사용
URI는 URL의 의미를 내포하고 있음
writeHead 메서드에 첫 번째 인수로 넣은 값
2XX
: 성공을 알리는 상태 코드입니다. 대표적으로 200(성공), 201(작성됨)이 많이 사용됩니다.3XX
: 리다이렉션(다른 페이지로 이동)을 알리는 상태 코드입니다. 어떤 주소를 입력했는데 다른 주소의 페이지로 넘어갈 때 이 코드가 사용됩니다. 대표적으로 301(영구 이동), 302(임시 이동)가 있습니다.4XX
: 요청 오류를 나타냅니다. 요청 자체에 오류가 있을 때 표시됩니다. 대표적으로 401(권한 없음), 403(금지됨), 404(찾을 수 없음)가 있습니다.5XX
: 서버 오류를 나타냅니다. 요청은 제대로 왔지만 서버에 오류가 생겼을 때 발생합니다. 이 오류가 뜨지 않게 주의해서 프로그래밍해야 합니다. 이 오류를 클라이언트로 res.writeHead로 직접 보내는 경우는 없고, 예기치 못한 에러 발생 시 서버가 알아서 5XX대 코드를 보냅니다. 500(내부 서버 오류), 502(불량 게이트웨이), 503(서비스를 사용할 수 없음)이 자주 사용됩니다.References
https://ko.wikipedia.org/wiki/REST
https://developer.mozilla.org/ko/docs/Web/HTTP/Methods
https://khj93.tistory.com/entry/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-REST-API%EB%9E%80-REST-RESTful%EC%9D%B4%EB%9E%80
https://joshua1988.github.io/web-development/http-part1/
[Node.js 교과서 - 조현영]