• API
  • REST API
  • 번외: 다른 종류API

 

제목 그대로 'REST API'란 무엇일까?

우선 API에 대해서 알아보자

Application Programming Interface의 준말이다.

응용 프로그램(1)에서 사용할 수 있도록, 운영 체제 프로그래밍 언어(2)가 제공하는 기능을 제어할 수 있게 만든 인터페이스(3)를 뜻한다.  1,2,3을 조합해보면 이해가 쉽지만 그래도 이해하기 어렵다.

비유적 설명을 들어보자

API는 '키보드'와 같다. 우리는 컴퓨터와 키보드를 통해서(정보를 입력해서) 대화(인터페이스)를 한다. 
이처럼 프로그램(인간이 아닌 코드)들이 서로 소톻하는 방법이 API이다. 그리고 우리가 사용하는 키보드를 서버에서 만든거라고 보면 된다. 키보드의 키는 각각 기능이 정해져있고 다양하게 작동한다.(우리의 키보드도 각 키마다 기능이 있지 않은가...?) 예를 들면 로그인과 같은 기능이 있을 수 있다. 이 키를 누르면 백엔드 데이터베이스, 서버로 가서 알려준다.

이게 비유적인 설명이었다면 다음 위키백과의 의미에 적용해보자

위키백과의 API설명

API(Application Programming Interface 애플리케이션 프로그래밍 인터페이스[*], 응용 프로그램 프로그래밍 인터페이스)는 응용 프로그램에서 사용할 수 있도록, 운영 체제 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 뜻한다. 주로 파일 제어, 창 제어, 화상 처리, 문자 제어 등을 위한 인터페이스를 제공한다.
 

인터페이스 (컴퓨팅) - 위키백과, 우리 모두의 백과사전

인터페이스(interface)는 서로 다른 두 개의 시스템, 장치 사이에서 정보나 신호를 주고받는 경우의 접점이나 경계면이다. 즉, 사용자가 기기를 쉽게 동작시키는데 도움을 주는 시스템을 의미한다.

ko.wikipedia.org

다음과 같이 말한다.

적용

아까 위키백과 API설명에서 
응용 프로그램(1)에서 사용할 수 있도록 => 프로그램끼리 소통할 수 있도록
운영 체제나 프로그래밍 언어(2)가 제공하는 기능을 제어 => 키보드의 기능이다.
할 수 있게 만든 인터페이스(3)를 뜻한다. => 키보드 역시 인터페이스이다.
요약: 키보드와 유사한 인터페이스인데 대상이 프로그램이라는 것이다. 키보드처럼 기능을 제공하는데 
주로 파일 제어, 창 제어, 화상 처리, 문자 제어 등을 위한 기능을 제공한다. 

(이해가 됐길바라며.. 이해가 되지않는다면 아래 출처의 링크에서 이해를 해보도록 하자! 글로 이해하는 것보다 또 다른 유튜브 영상을 참고하면 이해가 쉬울 것이다.)

API에 대해서 알아봤다. REST(Representational State Transfer) API는 API종류중 하나이다. (그냥 다르게 생긴 키보드라는 말임 다만 같은 목적으로 사용됨)

REST 사용법

자원(Resource)을 이름으로 구분하여 해당 자원(Resource)의 상태를 주고받는 모든것들을 의미
URI를 통해 자원(Resource)을 명시하고
HTTP Method(GET, POST, PUT, PATCH, DELETE 등)를 통해 
적용하는 것을 의미

정리: REST의 구성

자원(Resource) - URI

행위(Verb) - HTTP Method

표현(Representations)

 

 

 

출처:

API 기초개념 잡아드림. 5분 순삭.

https://www.youtube.com/watch?v=iyFHfzCRHA8

https://mungto.tistory.com/298

 

REST API란 무엇인가?

REST란 무엇인가? REST는 Representational State Transfer의 약자이다. - 자원을 이름으로 구분하여 해당 자원의 상태를 주고받는 모든것들을 의미한다. URI를 통해 자원(Resouce)을 명시하고 HTTP Method(GET,..

mungto.tistory.com

 

  • 라이브러리
  • 프레임워크
  • 라이브러리 vs 프레임워크

 

  • 라이브러리
소프트웨어 개발 시 사용되는 프로그램의 구성요소로, 공통으로 사용될 수 있는 특정한 기능(들)을 모듈화한 것이다.
대상 환경(플랫폼)에서 바로 실행될 수 있는 형태로 제공된다. 따라서 라이브러리는 동작하는 완전한 프로그램이 아닌, 특정한 부분 기능만을 수행하도록 제작된, 컴파일되어 기계어의 형태로 (또는 대상 플랫폼에 따라서는 바이트코드로) 존재하는 프로그램이다. 이 자체로는 사용자가 직접 일반적인 조작으로 실행할 수 없다.

https://namu.wiki/w/%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC

  • 프레임워크
메소드 및 클래스화, 즉 모듈화를 하는 이유 중 하나가 재사용성인데, 프레임워크는 이 재사용성을 큰 그룹 단위로 묶어주었다고 보면 된다. 
재사용 가능한 수많은 클래스들과 라이브러리들을 융합한 채로 처음부터 제공해 준다.

https://namu.wiki/w/%ED%94%84%EB%A0%88%EC%9E%84%EC%9B%8C%ED%81%AC

 

  라이브러리 프레임워크
공통점 다른 누군가가 쓴 코드를 가져다 쓰는 것들을 의미한다.
찾는 방법 - 내가 코드를 컨트롤하는가?
- 내가 모든 결정을 다 할 수 있는가? (내의지대로 소환 할 수 있는가?)
- 쉽게 대체될 수가 있는가? (대체되어도 프로젝트가 망가지지 않는가?)

프레임워크(누군가 정해준) 규칙(넣는 방법을 알려준다.)을 따라하는가?
내가 스스로 컨트롤하는게 없는가? 

특징 내가 "라이브러리"를 부른다.
~~~을 빌드하기 위한 ~~~ 라이브러리
"프레임워크"가 나를 부른다.
~~~을 빌드하기 위한  프레임워크
종류 Jquery django, react

 

 

출처:

라이브러리? 프레임워크? 차이점 아직도 모름? 5분 순삭.
https://www.youtube.com/watch?v=t9ccIykXTCM

'포트폴리오 > it개념들(이슈도 포함)' 카테고리의 다른 글

Node.js의 BE 또는 FE Library / Framework란?  (0) 2021.08.05
'REST API'란 무엇인가?  (0) 2021.08.05
정적 타입 언어 vs 동적 타입 언어  (0) 2021.08.05
npm이란?  (0) 2021.08.05
node.js란?  (0) 2021.08.05
  1. 타입이란?
    • 정적 타입 언어
    • 동적 타입 언어
    • 정적 타입 언어 vs 동적 타입 언어(참고로 Javascript는 동적 타입 언어이다)
  2. 번외: typescript가 인기가 많아지는 이유

 

동적(Dynamic) ---- 정적(static)언어 구분

위에 사진에 보듯 동적 타입vs 정적타입은 프로그래밍 언어를 나누는 기준이 된다.

프로그래밍언어의 중요한 특징이니깐 구분이될텐데 과연 이게 구체적으로 뭔지 알아보자

우선 타입이란 무엇일까?


1. 타입

- 컴퓨터 메모리에는 비트의 패턴이 저장된다. 이것이 무엇을 의미할지는 순전히 어떻게 쓰여질지에 따라 달려있다.

 

이렇게 어떻게 쓰일지를 결정하는게 바로 데이터 타입이다.

Data Type
  • 데이터가 어떻게 표현되고 사용될지를 결정한다.
  • 데이터 타입에 따라 컴퓨터가 어떻게 데이터를 다룰지 알 수 있다.
  • 컴퓨터에 저장된 모든 값은 데이터타입에 의해서 표현될 수 있다.

<간략한 데이터 타입 예시>

  • 거의 공통적으로 사용되는 데이터 타입
[  int, float, double, char, boolean ,null]
  • 자바와 자바와관련된 js(+ts)와 같은 언어
string
  • 객체지향언어 
object
  • 그외에 
ts경우에 int가 없고 number타입

2.

타입종류 정적타입 언어 (Static Typed Language)
동적타입 언어 (Dynamic Typed Language)
설명 자료형이 컴파일 타임에 결정되기 위해서, 소스코드 작성 시 명시적으로 자료형을 지정해주어야 한다. 동적타입 언어는 런타임 시 자료형이 결정되는 언어를 의미한다. 그래서  소스코드 작성 시 자료형을 명시적으로 지정해줄 필요가 없다
장점 안정성이 높다 실행속도가 빠르다. 유연성이 높고, 코드 작성이 효율적
단점 유연함이 떨어진다. 타입에 대한 리스크(+ 스펠링에러)를 런타임에 감당해야한다.
프로그래밍언어종류 C, C++, Java, C# Python, JavaScript, Ruby

+ typescript가 인기가 많아지는 이유

정적타입언어의 장점에서 들어난다. 
요즘, 웹의 규모가 커지며, 복잡하기에 타입에 대한 리스크를 감당하기 힘들어 졌다. 근데 정정타입언어는 이를 해결해줄 수 있기에 js를 동적 타입언어에서 정적타입언어로 바꿀 수 없을까? 고민 끝에 나온 것이 typescript이다.

 


글을 읽어주셔서 감사합니다!

추가로 js type에 대해 알고 싶으면 아래 링크를 참고하시면 좋겠습니다.

http://tcpschool.com/javascript/js_datatype_basic

 

코딩교육 티씨피스쿨

4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등

tcpschool.com


출처:

https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2Fb7T0hI%2Fbtq42zxomPi%2FAAAAAAAAAAAAAAAAAAAAAAh7o8livlmlxGF528fSIAdTmrzZuk8LEWoZC4lURhQI%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1767193199%26allow_ip%3D%26allow_referer%3D%26signature%3DesdvZ%252FDGKIm2TBfhVjMwDsBcOHw%253D 

https://media.vlpt.us/images/ggob_2/post/162f7362-ee80-445a-babb-156b3b10359b/TS%20vs%20JS.png

https://leetaehoon.tistory.com/5 

'포트폴리오 > it개념들(이슈도 포함)' 카테고리의 다른 글

Node.js의 BE 또는 FE Library / Framework란?  (0) 2021.08.05
'REST API'란 무엇인가?  (0) 2021.08.05
라이브러리와 프레임워크의 차이는?  (0) 2021.08.05
npm이란?  (0) 2021.08.05
node.js란?  (0) 2021.08.05

※ 원할한 진행을 위해서 반말체를 사용했습니다.(양해부탁드립니다.)

 

1. 들어보긴 했는데 과연 npm이란 무엇일까?

npm (노드 패키지 매니저/Node Package Manager) 이다.
자바스크립트 런타임 환경인 Node.js의 기본 패키지 관리자이다. 즉, 자바스크립트(javascript => js) 프로그래밍할때 사용되는 node.js에서 제공하는 패키지 관리자라는 것이다. 

2. 그러면 왜 패키지 관리자가 필요한가? (node.js에서 왜 이를 기본으로 제공해줄만큼 필요성이 있는가?)

 

자, 아래에 npm 공식 사이트가 있다. 공식사이트에서는 npm을 뭐라 부르는지 알아보자

(지금 당장 들어가서 스크롤을 내리면서 큰 글자가 적힌 문장들만 확인해보기만 해도된다. 꼭 한번 보자!)

https://www.npmjs.com/

 

npm

Bring the best of open source to you, your team, and your company Relied upon by more than 11 million developers worldwide, npm is committed to making JavaScript development elegant, productive, and safe. The free npm Registry has become the center of Java

www.npmjs.com

 

꼭 확인해보고 오길바란다...

  • Build amazing things ( 놀라운것들을 빌드할 수 있다고 한다. 이 놀라운 것들은 )
  • Take your JavaScript development up a notch ( 당신의 js개발을 한단계 높여준다. 어떻게?)
  • Bring the best of open source to you, your team, and your company ( 오픈소스중 최고를 가지고 오게하면서)
  • Gratefully serving everyone from solo devs to the Fortune 500 ( 이러한 편리한 장점때문에 유명한 기업들과 개인에게 널리 사용된다.)


정리하면...
 놀라운것들을 빌드할 수 있다고 한다. (어떻게?)
이 놀라운 것들은 오픈소스중 최고를 가지고 오면서 당신의 js개발을 한단계 높여준다.
이러한 편리한 장점때문에 유명한 기업들과 개인에게 널리 사용된다. (이케아, 나이키, 넷플릭스등..)

 

3. 왜 오픈소스가 이렇게까지..개발에 중요한가? 

오픈소스는 open source 말그대로 source가 열려있다는 것을 의미한다. (여기서 source는 개발 코드를 의미한다.)
좋은 오픈소스를 가져와서 사용하면 시간 단축과 좋은 프로그램을 만들수 있다. (좋은 프로그램은 프로그램의 역할을 충분히 하는 것도 있지만 그중에서 성능과 개발자입장에서 코드의 간결화 또는 작성부담덜어준다.)


npm은 open source를 패키지에 저장하며 이 패키지를 npm이 관리를 해준다.
어떻게 관리한다는 말인가?  => 세상에 많은 open source가 존재한다. (몇억개는 존재한다...) 이 패키지들을 우리가 직접 찾아다니면서 다운받지 않고 npm 하나만 있으면 된다.
그렇기에 Node.js 개발툴 뿐 아니라 수많은 개발도구들이 npm을 통해서 배포되며 개발툴이 다양해졌다. 그래서 경우에 따라서 Node.js의 버전을 달리 사용해야할 필요성도 생겼다. Node.js의 버전관리를 위해서 NVM이라는 도구를 사용하게된다.

 

+ 보너스

https://media.vlpt.us/images/goban/post/e1ec8795-122c-4f12-914e-4d33784ac617/yarn.jpg

yarn 또한 npm과 같이 js 패키지 매니저이다.

 

 

+ Recent posts