API란 말은 다들 많이 사용하고 무엇인지 알고 있지만 API는 "XX"이다 정확하게 말하는 경우도 없습니다.
왜 그런지 이유를 위키피디아를 찾아보면 굉장히 많은 뜻으로 쓰이고 있기 때문입니다.
API(Application Programming Interface,응용 프로그래밍 인터페이스는)
응용 프로그램에서 사용할 수 있도록, 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 뜻합니다.
"기계와 기계의 소통을 위한 기능 혹은 명세" 입니다.
예를 들어 기계의 경우
아이폰 혹은 안드로이드에서 API 서버가 있습니다. 아이폰 혹은 안이드로이는 API 정보를 전달하려면 의사소통을 해야합니다.
의사소통을 하려면 어떤 규칙이 필요합니다.
성능과 기능 필요에 따라 JSON이라는 규칙을 쓰거나 XML 등의 규칙을 사용할 것입니다.
이제 웹 혹은 앱에서 API에 대한 정의 한다면,
보통 앱 또는 웹 서비스 개발에서 다른 서비스에 소스는 공개하지 않으면서 권한에 따라 기능(데이터)을 제공하려고 할 때 사용합니다.
이런 규칙들을 바탕으로 우리의 서비스에 구글 지도나 네이버 로그인, 카카오톡 로그인 등의 기능을 활용할 수 있게 됩니다.
그럼 이제 기능적인 요소에 대해 좀 더 알아 보겠습니다.
위에 규칙이 나옵니다. JSON과 XML입니다.
유저입장에서는 JSON이건 XML이건 몰라도 사용하는데 크게 상관없습니다.
유저에게 정보를 전달하는 속도가 중요하기 때문에 위의 규칙을 숙지하고 어떤 규칙으로 진행할지 정하고 API 개발에 들어가야 하기 때문입니다.
저는 JSON을 선호하기 때문에 JSON을 이용하는 방식으로 진행합니다.
이제 포맷도 정했으면 아래처럼 문서를 만듭니다.
그럼 이런 문서는 왜 만들까요?
이 문서는 개발자들간의 공유 및 팀원들과의 소통을 위해서 문서를 작성합니다.
프로젝트에 따라 IOS,안드로이드 개발자,서버 개발자, 미들웨어 개발자 등등
필요에 따라 개발자 수는 다릅니다. 이 모든것을 혼자할수도 있습니다.
혼자 작업하다보면 까먹는것도 생길 수 있고 혼동이 오는 부분을 방지하기 위함입니다.
이런 이유들을 바탕으로 공지사항 목록 조회 API를 작성하는 예제 문서를 작성해 보겠습니다.
- API 설명 예시(다음은 공지사항 목록 조회 API에 대한 설명.)
인터페이스명 |
설명 |
공지사항 목록 조회 |
공지사항 목록을 리턴 |
■ 설명 : 공지사항 목록을 JSON 형태로 리턴 합니다
● Request
TYPE : POST/GET HTTP/1.1 Encoding : UTF-8 |
▲ Parameter : 아래의 파라미터 값들로 요청합니다.
이름 |
설명 |
필수 |
page |
페이지 번호 |
|
user_id |
유저 아이디 |
○ |
■ Response
HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8 { "code": 200, "message": “요청 성공하였습니다.”, "data": { “list_count”: “1”, “notice_list:”[ { "id": “123123123123adsacdsf” “title": “공지사항 제목", “author": "관리자", “date": "2015-07-02" } ] } }
|
◇ Response 속성
이름 |
설명 |
필수 |
code |
Response 코드 |
O |
message |
Response 메시지 |
O |
data |
Response |
|
└ list_count |
공지사항 리턴 데이터 수 |
O |
└ notice_list |
공지사항 목록 데이터 |
|
└ id |
공지사항 고유번호 |
O |
……………………… |
………………………………… |
|
▼ Error : 공통상항과 똑같이 적용. 특별한 경우 없음
이제 이런 형식을 이용하여 각 서비스에 필요한 기능들을 정의합니다.
기획서가 있다면 보통 문서 정의하는데 만해도 몇일이 소요가 됩니다.
이렇게 문서를 작업하고 나면 이제 미들작업을 시작하게 됩니다.
'개발 > Web 개발' 카테고리의 다른 글
[Django] RuntimeError: crypgraphy is required (0) | 2020.10.22 |
---|---|
[Django] Migration 오류 해결 방법 (migrate error) (0) | 2020.09.23 |
[Django]error 1146 : Table django_session don't exists when I try use admin with mysql 오류 해결 (0) | 2020.09.14 |
[Django] MVT 패턴 (0) | 2020.09.10 |
htaccess파일 & web.config파일 & httpd.conf파일 (정리해야함) (0) | 2020.09.02 |