1. API?
공공데이타를 활용하여 앱을 개발하려면 먼저 API란 무엇인지, 앱과 공공데이터는 어떻게 자료를 주고 받는지를 이해할 필요가 있습니다. API(Application Programming Interface)은 우리말로 번역하자면 "응용 프로그램 프로그래밍 인터페이스"라고 합니다. 예를 들어 파일 제어, 화상 처리, 문자 처리 등을 위한 인터페이스가 있다. 이와 같이 구글, 네이버, 카카오, 공공데이터포털 등과 같은 곳에서 어떤 자료를 처리하는 프로그램(인터페이스)를 만들고 외부 사용자가 소스는 터치하지 못하지만 해당 프로그램을 사용할 수 있게 하는 경우에 API를 만들어서 서로 자료를 주고 받게 하는 것입니다. 이 것을 개인이 사용할 수 있도록 오픈하는 경우에 개인이 요청자료를 해당 API가 정한 규칙에 맞춰서 요청자료를 보내주면 해당 API에서 응답자료를 보내주게되어 앱에서 개인이 활용할 수가 있습니다.
2. REST?
REST(Representational State Transfer)는 자원(이미지,동영상,DB 등)을 이름으로 구분해 해당 자원에 고유한 URI를 부여하고 활용하는 방법이라고 하겠습니다.
- Rest의 구성 : 자원(Resource), 행위(Verb), 표현(Representaion of Resource)
- 행위의 구분 : Get(읽기), Post(쓰기), Put(수정), Delete(삭제)
- Get방식 : 주소 뒤에 이름과 값이 결합된 형태. 255문자 이내만 가능
- Post방식 :인코딩하여 보내고 디코딩하여 받는 형태. 다량의 데이터 전송 가능
3. HTTP, GET, POST
- HTTP(Hypertext Transfer Protocol)는 웹클라이언트(사용자)와 웹서버간 데이터를 전송하는 약속
- GET과 POST는 이 HTTP에서 데이터를 주고 받는 7가지 메소드(방법)의 일부임
- HTTP통신할때는 Header와 Body영역으로 나뉘며 Header에는 여러가지 정보와 사용한 메소드의 종류에 대해서 기록하며 미소드 방식에 따라서 Body영역의 사용 유무 및 사용 방법이 달라짐
-GET방식 : URL에 Parameter를 붙여서 전송
ex) http://p2sklife.tistory.com/test_api?param1=value¶m2=value2
URL(사이트주소:URL(Uniform Resource Locator)뒤에 ?를 사용하여 Parameter를 작성하고, &를 붙여 여러개의 parameter를 구분함
body영역이 없음. 대용량 전송에 제한(255자까지만 가능)
-POST방식:body영역에 데이터를 실어 보냄으로 길이 제한이 없음. 이때 Body영역의 데이터 타입을 Header Content-Type에 명시해야 함. URL을 통해 볼 수 없으므로 GET보다는 안전
ex) Header 영역
Content-Type:application/json;charset=UTF-8
.....
BODY 영역
{
"param1":"value1",
"param2":"value2"
}
4. JSON vs XML
API를 사용하기 위해서 주고 받는 가장 대표적인 형식에 JSON과 XML이라는 것이 있습니다. 둘 다 어떤 구조화된 문서를 전송가능하게 만든 포맷(형식)인데, XML보다는 점차 JSON의 형식이 더 선호되고 있다고 하는데 아직은 두 방법이 같이 많이 사용되고 있습니다.
XML방식의 예 JSON의 예
<bread> {
<name>식빵</name> "name":"식빵",
<price>3000</price> "price":"3000"
</bread> }
5. RSS?
RSS(Rich Site Summary 또는 Really Simple Syndication)는 뉴스나 블로그 사이트에서 주로 사용하는 콘텐츠 표현방식으로 웹사이트 내의 내용을 보여주는데 핻아 사이트를 직접 방문하지 않고 최신 정보만 골라서 볼 수 있도록 하기 위해 등장. XML을 기반으로 개발.
예)
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
<title>제목</title>
<link>주소</link>
<description>설명 내용</description>
<item>
<title>제목</title>
<link>주소</link>
<description>설명 내용</description>
<pubDate>시간</pubDate>
</item>
</channel>
</rss>