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 를 참고했다.

+ Recent posts