30일차(REST API/POSTMAN)

Rina's·2023년 5월 23일

코드스테이츠

목록 보기
32/96

🤖REST API

웹에서 사용되는 데이터와 자원을 HTTP URI로 표현하고, HTTP 프로토콜을 통해 요청과 응답을 정의하는 방식

API
소프트웨어 구성 요소 간의 상호작용을 위한 규약. 응용 프로그램이 외부 시스템 또는 라이브러리와 상호작용하는 방법을 정의

라이브러리 API는 라이브러리가 제공하는 함수와 클래스를 활용하여 프로그램을 개발 API는 웹 서비스와 상호작용하기 위한 HTTP 요청과 응답 형식을 정의
운영 체제 API는 운영 체제에서 제공하는 기능에 접근하여 프로그램을 제어

HTTP 메서드
GET, POST, PUT, DELETE

REST 성숙도 모델

2단계까지만 적용해도 좋은 API 디자인이다

0단계 HTTP작성

1단계 개별 리소스와의 통신을 준수
모든 자원은 개별 리소스에 맞는 엔드포인트(URL)를 사용할 것
요청하고 받은 자원에 대한 정보를 응답으로 전달해야 한다
명사 형태의 단어로 작성하는 것이 바람직
응답시에도 리소스에 대한 정보와 함께 리소스 사용에 대한 성공/실패 여부를 반환할 것

2단계 원칙(CRUD)에 맞는 HTTP 메서드 사용
예시로 '조회'라면 GET메서드, 생성이라면 POST를 사용하여 요청
GET은 BODY가 없음으로 query parameter로 리소스 전달
POST요청에 대한 응답 반환시 응답코드와 관련 리소스를 URI로 확인 할 수 있어야 함

쿼리 파라미터

URL 끝에 추가되는 키-값 쌍
GET https://api.example.com/users?name=John
"John"인 사용자를 검색하도록 서버에 요청하는 쿼리 파라미터

HTTP 응답 코드

200 OK 처리 성공
201 Created 새로운 리소스 생성 성공
204 No Content 처리 성공, 응답으로 컨텐츠를 반환하지 않음
400 Bad Request 요청 부적절
401 Unauthorized 인증되지 않은 요청
403 Forbidden 리소스에 대한 접근 거부
404 Not Found 요청 리소스를 서버에서 찾을 수 없음
500 Internal Server Error 서버에서 내부 오류로 요청 처리불가
409 Conflict 요청 충돌 발생
503 Service Unavailable 서버가 일시적으로 요청을 처리할 수 없음
504 Gateway Timeout 게이트웨이 시간 초과

GET 은 기존 서버의 데이터를 변화시키지 않는 요청일것
POST는 요청마다 새로운 리소스를 생성할 것
PUT은 요청마다 같은 리소스를 반환할 것(멱등성을 가질 것)
PATCH는 요청마다 부분 수정을 적용(PUT은 교체, PATCH는 수정)

3단계 HATEOAS 사용
하이퍼미디어 컨트롤을 적용하여 응답에 리소스의 링크(URI 등) 를 삽입할 것
작성하거나 확인할 수 있는 링크 등..

🤖Open API & API Key

Open API

개방형 API, 보통 공개적으로 문서화되어 있으며, 개발자들이 API를 이해하고 사용할 수 있도록 자세한 설명과 예제 코드를 제공

API Key

서버 내 자원 접근 권한, 데이터 요청 시 API key를 같이 전달

🤖Postman

GUI API 테스트 도구 중 하나

POSTMAN으로 Open Weather Map에 GET요청하기

API Key는 가입시 OpenWeather에서 기본으로 제공한다
By city ID에서 URI를 확인하자!

api.openweathermap.org/data/2.5/weather?id={city id}&appid={your api key}

복사하여 POSTMAN에 GET 요청을 해보자

파라미터를 추가하여 POST요청하기

  1. Query Params탭에서 키, 값 쌍을 추가한다(URL에 바로 적어도 자동입력)
    응답의 args(파라미터)에 보이게 된다
  2. Requestbody에 추가한다
    Body탭의 raw, JSON을 설정하고 키, 값 쌍을 직접 입력 해 보자
    json 에 보이게 된다

GET과 DELETE는 body를 쓰지 않는다


profile
갭린이 리나

0개의 댓글