API 란?
Application Programming Interface
어플리케이션이 어떤 프로그램이 제공하는 기능을 사용할 수 있도록 연결하는 매개체
라고 하는데 잘 이해가 안된다.
대충 프로그램과 프로그램을 연결하는 통로 라고 이해하라는 글을 발견했다.
API는 프로그램과 프로그램을 이어주는 매개체 그 자체의 의미를 가진 것이기 때문에 API의 정의와 가장 가까운 개념은 "연결 통로"라고 보면 되구요.
그렇다면 '네이버 맵 API'라는 API가 있다고 가정 했을 때, 위 설명대로면 이 문장이 어색하고 부족해보일 수 있는데요.
이 문장을 풀어보면 "네이버 서버(PC)에 있는 맵 기능을 다른 사용자들이 사용할 수 있게 만든 API(통로)"가 되는 것이고
"네이버에서 맵 API를 제공한다." 라는 말은 "API(통로)를 통해 네이버의 맵 기능을 여러 사람이 사용할 수 있게 프로그래밍하여 제공한다"는 뜻이 되는 겁니다.
https://dev-dain.tistory.com/50
HTTP API란?
HTTP(HyperText Transfer Protocol)란?
HTML과 같은 하이퍼미디어 문서를 전송하는 프로토콜
웹 브라우저와 서버와의 통신을 위해 사용된다.
클라이언트(브라우저) -> 서버로 요청(request) 후에 서버가 다시 브라우저로 응답(response) 하는 방식으로 진행된다.
request 는 GET,POST,DELETE,PUT,FATCH 등과 같은 HTTP 메소드를 이용해 이루어진다.
HTTP API 는 HTTP표준 접근 방식을 사용해 프로그램끼리 소통하는 API를 이야기한다.
REST API 란?
REST(Representational State Transfer) 원칙에 따라 구현한 API 이다.
REST는 HTTP를 잘 활용하기 위한 원칙이고, REST API는 이 원칙을 준수하여 만든 API이다.
REST는 url로 자원을 표현하는데 집중하고 자원을 활용할 행위는 HTTP 메소드를 사용하여 실행하는 것을 주요 원칙으로 한다.
/create_student
/get_student/kim
/update_student/kim
/delete_student/kim
/get_students
이러한 url이 존재한다고 하자. url만으로 무슨 기능을 수행하는지는 알겠지만 REST 규칙에 맞는다고 할 수 없다.
REST를 제대로 적용한 url은 자원만을 표현한다. 즉 명사로 이루어져야한다.
/student #create
/student/kim #read
/student/kim #update
/student/kim #delete
/students #read
위의 url에서 동사를 모두 지우고 명사만 남겨봤다.
이렇게 url을 작성한다면 겹치는 url이 생기고 한 개의 url이 연결하는 페이지가 여러가지 기능을 수행할 수 있어야 한다.
이때 사용해야 할 것이 HTTP 메소드이다.
GET = read
POST = create
PUT = update
DELETE = delete
이 4가지의 HTTP 메소드를 사용해 CRUD 기능을 구현한다.
/students
/students/kim
결론적으론 이렇게 두 개의 url만 만들어 놓은후
/students url에서 GET 메소드 요청시 학생 정보 출력, POST 메소드 요청시 새로운 학생 생성
/students/kim 에서 PUT 메소드 요청시 학생 정보 수정, DELETE 메소드 요청시 학생 정보 삭제
의 기능을 모두 수행할 수 있다.
장고로 REST API 구현하기
장고로 백엔드 rest api를 구현하기 위해 만들어진 djangorestframework 가 존재했고 이걸 사용해볼 예정이다.
간단하게 설명하자면 http 요청과 JSON이 전송됐을 때 위의 프레임워크를 사용하면
serializers라는 기능을 사용해 아주 쉽고 빠르게 JSON<-> 데이터베이스 쿼리셋 변환이 가능하다.
자세한 실습 과정은 다음 글에 이어서 쓰도록 하겠다.
실습 과정은 https://grape-blog.tistory.com/16?category=473970 를 참고했다.
'장고는 못말려' 카테고리의 다른 글
장고로 REST API 구현하기 - 4 (Serializer 응용) (3) | 2022.07.01 |
---|---|
REST API 장고로 구현하기 - 3 (연습 프로젝트 구현) (2) | 2022.06.22 |
REST API 장고로 구현하기 - 2 (연습 프로젝트 준비) (2) | 2022.06.22 |
JS - variable type && Equality operator 정리 (0) | 2022.03.27 |
VS CODE 단축키 정리 - MAC (0) | 2022.03.26 |