시작은 0부터
API, JSON 본문
API(Application Programming Interface)
외부 라이브러리 연동.
응용 프로그램에서 사용할 수 있도록 운영 체제나 프로그래밍 언어가 제공하는 기능을 사용할 수 있게 제공되는 인터페이스.
인터페이스(Interface)
서로 다른 시스템 간에 커뮤니케이션이 가능하도록 설계한 상호 작용 방식.
소프트웨어 인터페이스
: 운영체제는 하드웨어와 접속할 수 있는 통로로써 인터페이스를 활용.
객체 지향 프로그램들의 경우 응용 프로그램 내의 오브젝트들 간의 메소드를 통해서 상호작용하는데 활용된다.
Web API
웹서버 또는 웹 브라우저를 위한 API.
- HTTP 서비스.
- 다양한 클라이언트에서 접근 가능하도록 설계
- 웹 환경을 통해 제공되는 데이터 CRUD 인터페이스 제공.
URI, URL, HTTP, HTML
URL(Uniform Resource Locator) : 자원(Resource)이 어디에 있고, 어떻게 접근할 수 있는지 (protocol)을 알려준다.
HTTP(Hyper Text Transfer Protocol) : 어떻게(규약/약속) 접근할 수 있는지
Hyper Text
단순한 텍스트가 아닌 원격의 텍스트. 기존의 직선(순차) 구조의 글과는 달리, 다걱적으로 정보에 접근할 수 있는 체계. 순차적 접근을 뛰어 넘는다는 의미. 일반적인 의미로는 텍스트, 이미지 등 모든 데이터를 뜻한다.
Hyper Link : Hyper Text를 표현하는 대표적인 텍스트 표현 방식.
단편적인 정보를 좀 더 자세히 읽어 보는 수단. 인터넷과 결합하여 HTML 의 주요 구성요소가 되었다.
Transfer Protocol : 전송 규약(약속)
-요청(Request) / 응답(Response) : 요청의 형식과, 응답의 형식이 있다.
-StateLess(상태가 없다) : 이 전 통신과 상관없이 매 통신마다 필요한 정보를 모두 담아서 요청.
-TCP/IP 기반
-기본 포트 80
Request 구조
Method : CRUD Operation
GET
: Body에 담아 보내는 정보를 기준으로 서버에서 데이터를 보내달라는 의미. 데이터를 받아 오기만 한다.
POST
: Body에 당망 보내는 정보를 기준으로 서버에서 데이터를 생성해 달라고 요청. 데이터를 생성/수정할 때 사용
DELETE
Header(형식)
요청할 떄 전송할 부가적인 정보들
Body(데이터)
요청할 때 어떤 정보를 담을 지에 대한 내용들
CRUD Operation
대부분의 컴퓨터 소프트웨어가 가지는 기본적인 데이터 처리 기능
Create : 데이터 생성(POST)
Read : 데이터 조회(GET)
Update : 데이터 수정(PUT, PATCH)
Delete : 데이터 삭제(DELETE)
Responce 구조
Status Code
: 요청이 잘 처리가 되었는지 나타내는 코드
200 : 요청이 잘 처리되었을 때
Header(형식)
결과를 보내는 서버 정보
Body에 대한 정보
Body(데이터)
응답 데이터
HTML 등
URI(Uniform Rosource Identifier)
URL을 포함하는 상위 개념
[ ] : 대괄호가 있으면 반드시 들어가지 않아도 되는 것. 대괄호가 있는 부분은 반드시 넣어야하는 부분.
형식 : sheme : [//[user[:password]@[[port][/[part][/path][?quary][#fragement]
Sheme : 사용할 프로토콜을 뜻하며 웹에서는 http 또는 https를 사용.
User 와 Password : 데이터에 접근하기 위한 사용자의 이름과 비밀번호.
Host 와 Port : 접근할 대상(서버)의 호스트명과 포트번호
Path : 접근할 대상(서버)의 경로에 대한 상세 정보
Query : 접근할 대상에 전달하는 추가적인 정보(파라미터)
Fragment : 메인 리소스 내에 존재하는 서브 리소스에 접근할 때 이를 식별하기 위한 정보
REST(Representational State Transfer)
웹(HTTP&HTTPS)에 존재하는 모든 자원을 URI를 통해 명시하고, 이런 자원들의 작동 방식에 대한 조건을 부과하는 소프트웨어 아키텍처.
어떤 리소스의 이름을 정하고, 서로 규정하는 것?
REST 가 아닌 것들
RPC (Remote Procedure Call)
소켓프로그래밍
원격지에 위치한 프로그램을 로컬에 있는 프로그램처럼 호출
CORBA(Common Object Request Broker Architecture)
로컬/원격을 포괄한 프로그램 객체 간의 메소드 호출( 다양한 언어 지원)
특징
Server-Client(서버-클라이언트 구조)
서버에는 자원이 있고, 클라이언트에서 자원을 요청하는 구조
Stateless(무상태)
클라이언트의 Context를 서버에 저장하지 않는다.
Layered System(계층화)
서버는 비즈니스 로직 수행, 그 앞단에 사용자 인증을 하는 계층을 추가하는 식으로 구조상 유연성을 유지
Uniform Interface(인터페이스 일관성)
URI로 지정한 자원에 대한 조작을 통일되고 한정적인 인터페이스로 수행
REST API
OpenAPI ( 누구나 사용할 수 있도록 공개된 API : 구글 맵, 공공 데이터 등 )
대한민국 공식 데이터포털 : https://www.data.go.kr/
Sportify : https://www.spotify.com/kr-ko/
JSON 공식사이트
https://www.json.org/json-ko.html
JSON 파일 정리해서 보는 사이트