# API(Application Programming Interface)
컴퓨터 프로그램 간 상호 작용을 위한 규약이나 인터페이스를 의미합니다. 간단히 말해서, 소프트웨어 컴포넌트들이 서로 소통하는 방법을 제공하는 도구나 메커니즘입니다.
API는 여러 개념을 포괄하며, 다양한 분야에서 사용됩니다. 주로 웹 개발, 애플리케이션 개발, 데이터 공유 등에서 사용됩니다. 아래는 API에 대한 주요 개념과 사용 사례에 대한 설명입니다:
1. **개념**: API는 프로그램끼리 상호 작용하기 위한 인터페이스입니다. 이를 통해 하나의 소프트웨어가 다른 소프트웨어의 기능을 활용하거나 데이터에 접근할 수 있습니다. API는 프로그램이 서로 통신하는 방식을 정의하고, 데이터를 전송하거나 받을 수 있는 규약을 제공합니다.
2. **웹 API**: 웹 개발에서 가장 흔히 사용되는 API는 웹 API입니다. 이는 웹 서비스를 제공하는 서버의 기능과 데이터에 접근할 수 있는 방법을 정의한 것입니다. 웹 API는 주로 HTTP 프로토콜을 통해 요청(Request)을 보내고 응답(Response)을 받아 사용자나 다른 시스템과 상호 작용합니다.
3. **REST API**: Representational State Transfer의 약자로, 웹 서비스 아키텍처의 한 형식입니다. REST API는 자원을 URL로 나타내고 HTTP 메서드(GET, POST, PUT, DELETE 등)를 사용하여 해당 자원에 대한 작업을 수행하는 방식을 기반으로 합니다.
4. **클라이언트-서버 모델**: API는 보통 클라이언트와 서버 간 상호 작용을 위한 방법을 제공합니다. 클라이언트는 API를 통해 서버의 기능을 사용하거나 데이터에 접근하고, 서버는 요청에 따라 데이터를 처리하여 응답합니다.
5. **API 키와 인증**: 일부 API는 보안을 위해 API 키나 인증 방식을 사용합니다. API 키는 클라이언트를 식별하고 권한을 부여하기 위해 사용되며, 인증은 API 사용자의 신원을 확인하여 접근 권한을 부여하는 과정입니다.
6. **사용 사례**: API는 다양한 용도로 사용됩니다. 예를 들어, 외부 서비스의 데이터를 가져오는데 사용되는 외부 데이터 API, 결제 시스템과 연동하여 결제를 처리하는 결제 API, 지도 서비스의 기능을 웹 애플리케이션에 통합하는 지도 API 등이 있습니다. API는 소프트웨어 개발을 효율적으로 하기 위한 중요한 도구로, 다양한 서비스 및 플랫폼 간의 통합과 협업을 가능케 합니다.
# 예제1(PHP 사용)
1. mysql 등 DB에 데이터 입력
<?php
$conn = mysqli_connect("localhost", "data", "pass", "data");
// mysqli_connect("호스트명", "user", "password", "DB명");
$sql = "INSERT
INTO `gps`
( `device`, `created`, `lat`, `lng`)
VALUES
( 'a', NOW(), '12', '13');";
mysqli_query($conn, $sql );
echo "ok<br>";
?>
2. DB를 json화 해서 api로 만들어 소통
<?php
$conn = mysqli_connect("localhost", "data", "pass","data");
$sql = "SELECT * FROM gps WHERE device = 'a' LIMIT 100 ;";
$result = mysqli_query($conn, $sql );
$dbdata = array();
while($row = mysqli_fetch_array($result)) {
$dbdata[] = [(int)$row['id']
,$row['created']
,(float)$row['lat']
,(float)$row['lng'] ];
}
//Print array in JSON format
echo json_encode($dbdata);
?>
3. api 사용하기
function updateChart() {
var json_addr = "http://localhost/api/view.php?dev=<?= $device ?>";
// api 엔드포인트
$.getJSON(json_addr, function (data) {
// 제이쿼리 사용
// $.getJSON(api 엔드포인트, function (data) { }
$.each(data, function (key, val) {
// $.each(data, function (key, val) { }
// 데이터에서 키와 벨류 값 foreach로 꺼냄
var time = val[1];
var temp = val[2];
var hum = val[3];
});
});
setTimeout(function () {},1000);
// 1초마다 리부트 js
};
# 예제2(Django 사용)
1. 기본적인 Django 프로젝트 생성 - mysql 연동 - 모델 생성 - 시리얼라이저 생성 까지는
이전 Django 페이지 참조.
2. 화면으로 view에 뿌려주기
from rest_framework.response import Response
from rest_framework.decorators import api_view
from .models import All_data, Rel_data
from .serializers import All_Serializer
@api_view(['GET'])
def get_data(request):
datas = All_data.objects.all()
serializer = All_Serializer(datas, many=True)
return Response(serializer.data)
* @api_view 데코레이터를 사용하면,
자동으로 api를 문서화 해준다. 예쁘게;
# 참고 카카오 api
https://apis.map.kakao.com/web/sample/multipleMarkerImage/
'Programming > etc' 카테고리의 다른 글
설정파일 포맷 관련 (0) | 2023.09.18 |
---|---|
프로그래머 일기 1 (0) | 2023.09.13 |
Git의 모든 것 (0) | 2023.08.23 |
웹앱(Web app)에 관하여 (0) | 2023.08.03 |
RESTful API(Representational State Transfer) (0) | 2023.08.03 |