HANA -J
WIL [항해99] 3주차 - NPM, REST 본문
> 2021/11/15 - 2021/11/20
>Node.js 입문 주차
지난 TIL에 Express에 이어서
1. NPM?
NodePackageManager의 약어로 패키지를 관리하는 작업을 안전하게, 자동화 할 수 있게 해주는 도구이다. npm을 통해 패키지또는 모듈이라고 불리는 자바스크립트 소프트웨어를 자신의 프로젝트에 설치할 수 있다.
>패키지 : package.json으로 설명되는 파일 또는 디렉토리
>패키지 관리: 패키지를 설치, 업데이트, 수정, 삭제 하는 작업
> 모듈 : node.js의 require()함수로 로드 될 수 있는 node_modules 디렉토리안의 파일 또는 디렉토리이다.
2. package.json?
package.json은 프로젝트의 정보를 정의하고, 의존하는 패키지 버전 정보를 명시하는 파일이다.
일반적으로 루트 디렉토리에 위치하고, 작성되는 정보는 크게 프로젝트 정보, 패키지 정보이다.
> 프로젝트 정보 - name, version
> 패키지 버전 정보 - dependencies 또는 devDependencies
dependencies : 프로덕션 환경에서 응용 프로그램에 필요한 패키지
devDependencies : 로컬 개발 및 테스트에만 필요한 패키지
3. 엄청난걸 찾았다 nodemon
Node로 서버를 실행하고 파일의 변경 사항이 생기면, 서버를 종료하고 다시 노드로 실행을 해주어야 하는 귀찮음이 있다.
하지만 서버를 종료하지 않아도 자동으로 새로 고침되는 npm이 있다.
npm install nodemon
설치하고 나서 package.json파일에 script영역을 아래와 같이 수정 해준다 .
위의 사진에서 우리가 추가할 부분은 "watch" :"nodemon server" 이것만 해주면 된다. !!
4. RestfulAPI
- API?
Application Programming Interface, 응용프로그램에서 사용할 수 있도록, 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터 페이스를 의미한다.(위키백과)
api에 대해 검색하면 흔히 많이 비유해서 설명해주는게 식당의 손님과 점원과 주방장이다. 한번 읽으면 이해는 된다 api가 중간에서 전달의 역할을 수행한다❗️
> 1. API는 서버와 데이터베이스에 사이에서 중간역할 : 보통은 허용된 클라이언트만 접근할 수 있도록 접근성을 부여하는 역할을 한다.
> 2. API는 애플리케이션과 기기가 통신 할 수 있도록 한다.
> 3. API는 모든 접속을 표준화 한다.
그렇다면 모든 api가 같은 역할만 하는가 ? 그건 아닌거 같다. api에도 유형이 있다.
일단은 웹API에 대해서 잘 정리하고 가자 !!
- 서버와 데이터베이스의 데이터에 접근 할 수 있게 해준다. API는 접근의 권한을 부여한다.
- 모든 요청과 응답을 표준화 한다. 어떠한 하드웨어이던지 os에 상관없이 표준화를 해준다.
- REST ?
Representational State Transfer의 약어로 네트워크 아키텍처 원리의 모음이다.
=> REST원리를 따르는 시스템을 RESTful이란 용어로 부른다.
REST 아키텍처에 적용되는 6가지 제한조건
- 인터페이스 일관성 : 일관적인 인터페이스로 분리되어야 한다
- 무상태(Stateless) : 각 요청 간 클라이언트의 콘텍스트가 서버에 저장되어서는 안 된다
- 캐시처리기능 : WWW에서와 같이 클라이언트는 응답을 캐싱할 수 있어야 한다.
- 잘 관리되는 캐싱은 클라이언트-서버 간 상호작용을 부분적으로 또는 완전하게 제거하여 scalability와 성능을 향상시킨다.
- 계층화: 클라이언트는 보통 대상 서버에 직접 연결되었는지, 또는 중간 서버를 통해 연결되었는지를 알 수 없다. 중간 서버는 부하분산 기능이나 공유캐시 기능을 제공함으로써 시스템 규모 확장성을 향상시키는 데 유용하다.
- Code on demand(선택적) : 자바 애플릿이나 자바스크립트의 제공을 통해 서버가 클라이언트가 실행시킬 수 있는 로직을 전송하여 기능을 확장시킬 수 있다.
- 클라이언트/서버구조 : 아키텍처를 단순화시키고 작은 단위로 분리(decouple)함으로써 클라이언트-서버의 각 파트가 독립적으로 개선될 수 있도록 해준다
(출처 : 위키백과)
- REST API?
HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고, HTTP Method(POST, GET, PUT, DELETE)를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것을 의미한다.
- REST API 표현방식
- - HTTP Method : GET, POST, PUT, DELETE 이용
- - EndPoint : 행위가 아닌 resource를 나타내어야 하고 주로 명사를 이용. 동사의 역할은 HTTP Method가 수행.
- REST API 설계가이드
- 리소스에 대한 행위는 HTTP Method(POST, GET, PUT, DELETE)로 표현해야 합니다.
- /(슬래시)는 계층 관계를 나타낼때 사용합니다.
- URI 마지막 문자에 /(슬래시)를 사용하지 않습니다.
- URI에 _(underscore)는 사용하지 않도록 합니다. 또한 영어 대문자보다는 소문자를 씁니다.
그리고 가독성을 위해서 긴 단어는 잘 사용하지 않습니다. - URI에 동사는 GET, POST와 같은 HTTP Method를 표현하기 때문이다.
동사가 아니라 명사를 사용한다. - URI에 파일의 확장자(예를들어 .json , .JPGE)를 포함 시키지 않습니다.
=> 웹API는 다양한 브라우저, 다양한 디바이스에서 통신을 할 수 있도록 표준화를 해주는게 그의 역할인데 그 역할을 수행하는데 REST한게 좋기때문에 많은 개발자가 관심을 가지고 선택이아니라 표준처럼 되어 가는거 같다.
❗️개인적인 생각입니다❗️
'what I Learnd > WIL' 카테고리의 다른 글
WIL [항해99] 6주차 - 협업이란 (0) | 2021.12.11 |
---|---|
WIL [항해99] 5주차 - 같이 일하고 싶은 개발자 (0) | 2021.12.05 |
WIL -ORM , SQL (0) | 2021.11.28 |
WIL [항해 99] 2주차 - ECMAScript (0) | 2021.11.14 |
WIL [항해 99] 1주차 - 크롤링 (0) | 2021.11.07 |