일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- max-width
- WEB2-JavaScript
- li 태그
- 크롬웹
- :root
- Pull
- 나도코딩 파이썬
- error: ENOENT: no such file or directory
- 백준 정리
- 노마드 코더
- nav태그
- 라매개발자
- 코딩테스트
- 생활코딩
- 드림코딩
- margin 0 auto
- border radius
- 할만한데?
- html 끝
- git
- 백준
- HTML
- box-sizing: border-box
- git 버전관리
- 백준 자바스크립트
- 나도코딩
- button:focus cursor: pointer; outline: none;
- 생활코딩 WEB2-JavaScript
- 단계별로 풀어보기
- calc()
- Today
- Total
코딩응애의 개발블로그
코드스테이츠 블로깅 - (REST API) + 생활코딩 (REST API) 본문
REST API
에서 REST는 “Representational State Transfer”의 약자
웹에서 사용되는 데이터나 자원(Resource)을 HTTP URI로 표현하고, HTTP 프로토콜을 통해 요청과 응답을 정의하는 방식을
말한다.
REST API를 잘 적용하기 위한 4단계 모델을 만들었습니다. 총 4단계(0~3단계)로 나누어짐
컴퓨터의 기능을 실행시키는 명령 근데 내 컴퓨터가 아닌 남의 컴퓨터를 실행. 인터넷과 웹을 통해서 나의 컴퓨터를 제어할때
어떻게 하면 시행착오를 줄이고 더 좋은 API를 만들수 있는가에 대한 고민의 결과물이 REST API 이다.
REST API는 특정 기술을 의미하는것이 아니라 HTTP를 이용해서 기계들이 통신을 할때 HTTP가 잠재력을 최대한
이용할 수 있도록 유도하기 위한 모범 사례이다.
collection은 element들이 모여있는것이고 id값을 element에서 사용하는게 일반적이다 이름으로도 가능
하지만 리소스를 URI로 표현하는 것만으로는 아무것도 할 수가 없다 URI는 단지 그 정보를 식별하는 이름일 뿐
이 정보를 가공할수 있어야 하는데 생성 읽기 수정 삭제 (CRUD) 이러한 과정을 REST API에서는 메서드 라고 한다.
- Create -> post(생성)
- Read -> get (읽기)
- Update-> put(전체내용을 수정) / patch(부분을 수정)
- Delete -> delete (삭제)
REST API는 클라이언트와 서버가 어떠한 데이터 타입으로 통신할 것인지를 규정하지 않는다.
리소스를 식별할때는 URI를 통해서 식별하고 어떠한 행위를 할때는 HTTP의 고유한 메서드를 이용한다응답의 결과를 알려줄때는 상태코드를 정확하게 사용해서 알려준다따라서 REST API는 HTTP가 원래 가지고 있는 의미를 잘 활용하자는 것이라고 할 수 있다.
0단계
0단계에서는 단순히 HTTP 프로토콜을 사용 이경우 해당 API를 REST API라고 할 수는 없음 REST API를 작성하기 위한 기본 단계
1단계
1단계에서는 개별 리소스(Resource)와의 통신을 준수해야 합니다.
모든 자원은 개별 리소스에 맞는 엔드포인트(Endpoint)를 사용해야하며 요청하고 받는 자원에 대한 정보를 응답으로 전달해야 한다는 것이 1단계의 핵심
어떤 리소스를 변화시키는지 혹은 어떤 응답이 제공되는지에 따라 각기 다른 엔드포인트를 사용하기 때문에, 적절한 엔드포인트를 작성하는 것이 중요
2단계
CRUD에 맞게 적절한 HTTP 메서드를 사용하는 것에 중점을 둡니다 앞선 단계에서는 모든 요청을 POST 메서드를 사용했는데
2단계 부터는 적절하게 사용해야 한다.
예를들어 조회(READ)하기 위해서는 GET 메서드를 사용하여 요청을 보내고 예약을 생성(CREATE)하기 위해서는
POST 메서드를 사용하여 요청을 보내야 한다.
- GET 메서드 같은 경우는 서버의 데이터를 변화시키지 않는 요청에 사용해야 합니다.
- POST 메서드는 요청마다 새로운 리소스를 생성하고 PUT 메서드는 요청마다 같은 리소스를 반환합니다.
- 이렇게 매 요청마다 같은 리소스를 반환하는 특징을 멱등(idempotent)하다고 합니다.
- 그렇기 때문에 멱등성을 가지는 메서드 PUT과 그렇지 않은 메서드POST는 구분하여 사용해야 합니다.
- PUT 메서드와 PATCH 메서드도 구분하여 사용해야 합니다. PUT은 교체, PATCH는 수정의 용도로 사용합니다.
※ 멱등이란? 연산을 여러 번 적용하더라도 결과가 달라지지 않는 성질
2단계 까지 적용을 하면 잘 작성된 API임 3단계 까지 적용한 경우는 드물다 무조건 3단계 까지 적용해야 하는건 아니다.
3단계
HATEOAS(Hypertext As The Engine Of Application State)라는 약어로 표현되는 하이퍼미디어 컨트롤을 적용
3단계의 요청은 2단계와 동일하지만, 응답에는 리소스의 URI를 포함한 링크 요소를 삽입하여 작성
응답 내에 새로운 링크를 넣어 새로운 기능에 접근할 수 있도록 하는 것이 3단계의 핵심
Open API
글자 그대로 누구에게나 열려있는 API. "무제한으로 이용할 수 있다"라는 의미는 아닙니다
Open API라도 정해진 이용 수칙이 있고, 그에 따라 제한사항 (가격, 정보 등) 이 있을 수 있습니다.
공공데이터에 쉽게 접근할 수 있도록 정부는 Open API의 형태로 공공데이터를 제공하고 있습니다.
API key
API를 이용하기 위해서는 API Key가 필요합니다. API key는 서버의 문을 여는 열쇠
'코드스테이츠(부트캠프)' 카테고리의 다른 글
코플릿 풀면서 알게된 점 (정규식과 replaceAll() & /[^0-9]/g) (0) | 2022.08.16 |
---|---|
코플릿 문제 풀면서 알게된 것들 - 바빌로니아 법 (제곱근) (0) | 2022.08.13 |
코플릿 문제 풀면서 알게된 것들 - 배열안에 특정 값 제거 (0) | 2022.08.04 |
코플릿 문제 풀면서 알게된 것들 - replace() (0) | 2022.08.01 |
코드스테이츠 블로깅(프로토타입 체인) (0) | 2022.07.25 |