개발자의 logs
항해 99 - 3주차 WIL : Be the sparta with together. / REST API, Package.json 본문
개발자 학습노트/* 학습일기*
항해 99 - 3주차 WIL : Be the sparta with together. / REST API, Package.json
주인장v 2022. 5. 29. 09:41
항해99 3주차 회고 ! 오늘은 일요일이다. 약간 뿌듯한 샷을 하나 던지며 시작해본다
일요일 아침이라 그런지 나밖에 없었다 ㅎㅎ 후후.... 이 글을 쓰면서 방금도 봤는데 나혼자! 뭔가 뿌듯하다....
다들 3주차라 조금씩 체력이 달려가는거 같긴하다. 나도 가끔 일어나서 조금 더 자고 시작할까?
더 자고 시작하면 오히려 효율이 좋지않을까? 라며 의심하고 타협하려고 한다.
이런 생각이 들수록 운동해야지 하는데 막상 10시 11시에 끝나면 밥먹고 씻고 자기 바쁘다 ㅋㅋㅋ
난 다행히 선천적(?)으로 타고난 체력 때문에 좀더 잘 버티는 것 같다(ㅋㅋ) 그래도 운동은 해야겠다
![](https://blog.kakaocdn.net/dn/bmNpL5/btrDpPGo17J/OAmMflDAQ7J88S9i0oU1w0/img.png)
추가로 웃긴 사진 하나 더 올려본다... 이 사진은 항해톡 발표자들이 서로 리허설해보자고 모여서 연습할때 사진이다.
셋이 우연히 신호등색으로 티셔츠를 입었다고 서로 웃고 떠드는 사진ㅋㅋㅋㅋ 난 그와중에 스크린샷 찍겠다고 표정관리하고 있다..ㅋㅋㅋㅋㅋ (초록색 가르마남)
이번주는 주특기 기초, 숙련주차가 겹쳐있던 주였다. 난 다른 사람들에 비해 주특기 기초 개인과제, 팀과제가 생각보다 일찍 끝났었다.
그래서 약간 방황아닌 방황을 했다. 농담식으로 산업혁명때 일자리 잃은 노동자 느낌이라고 ㅎㅎ ... 최대한 스스로 찾아서 추가적인 공부를
하려고 노력했다. 그래도 개인과제라는 목표가 있을때보단 불타지 않았지만, 다음엔 좀 더 보완해서 열심히 꽉 채워서 해보려고 한다!
내가 이번 WIL을 통해 정리해볼 키워드는
Restful API, package.json 두개다.
![](https://blog.kakaocdn.net/dn/wbApi/btrDnqN7yUM/4gADxYij3MtsudBLBsNSK0/img.png)
REST API란 ,
REST를 기반으로 만들어진 API이다.
REST란 , REST(Representational State Transfer)의 약자로 자원을 이름으로 구분하여 해당 자원의 상태를 주고받는 모든 것을 의미한다.
즉 , REST란
- HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고,
- HTTP Method(POST, GET, PUT, DELETE)를 통해
- 해당 자원(URI)에 대한 CRUD Operation을 적용하는 것을 의미한다.
라고 한다.
REST 구성 요소
REST는 다음과 같은 3가지로 구성이 되어있다.
- 자원(Resource) : HTTP URI
- 자원에 대한 행위(Verb) : HTTP Method
- 자원에 대한 행위의 내용 (Representations) : HTTP Message Pay Load
REST의 특징
- Server-Client(서버-클라이언트 구조)
- Stateless(무상태)
- Cacheable(캐시 처리 가능)
- Layered System(계층화)
- Uniform Interface(인터페이스 일관성)
REST의 장단점
장점
- HTTP 프로토콜의 인프라를 그대로 사용하므로 REST API 사용을 위한 별도의 인프라를 구출할 필요가 없다.
- HTTP 프로토콜의 표준을 최대한 활용하여 여러 추가적인 장점을 함께 가져갈 수 있게 해 준다.
- HTTP 표준 프로토콜에 따르는 모든 플랫폼에서 사용이 가능하다.
- Hypermedia API의 기본을 충실히 지키면서 범용성을 보장한다.
- REST API 메시지가 의도하는 바를 명확하게 나타내므로 의도하는 바를 쉽게 파악할 수 있다.
- 여러 가지 서비스 디자인에서 생길 수 있는 문제를 최소화한다.
- 서버와 클라이언트의 역할을 명확하게 분리한다.
단점
- 표준이 자체가 존재하지 않아 정의가 필요하다.
- 사용할 수 있는 메소드가 4가지밖에 없다.
- HTTP Method 형태가 제한적이다.
- 브라우저를 통해 테스트할 일이 많은 서비스라면 쉽게 고칠 수 있는 URL보다 Header 정보의 값을 처리해야 하므로 전문성이 요구된다.
- 구형 브라우저에서 호환이 되지 않아 지원해주지 못하는 동작이 많다.(익스폴로어)
package.json
package.json이란 현재 프로젝트에 관한 정보와 패키지 매니저(npm, yarn)을 통해 설치한 모듈들의 의존성을 관리하는 파일이다.
아래 코드는 실제 내가 쓰고있는 package.json 코드다.
{
"name": "tutorial",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC"
}
- package.json 파일은 배포한 모듈 정보를 담고자 만들어졌다.
- pacakge.json 파일은 기본적으로 CommonJS의 명세를 충실히 따르고 있으며 JSON 형식의 파일이다.
- 직접 작성할 수도 있고 npm init 명령을 통해서 자동으로 생성할 수도 있다. (하지만 npm init 추천한다)
name
- 프로젝트 이름으로, 가장 중요하다. 중앙 저장소에 배포할 때 version과 함께 필수 항목이다.
- url로 사용되고, 설치할 때 디렉토리 이름이 되기 때문에 url이나 디렉터리에서 쓸 수 없는 이름을 사용하면 안 된다.
- 또한, 이름에 node나 js가 들어가면 안 된다.
- name은 214자보다 짧아야 하며, 점(.)이나 밑줄(_)로 시작할 수 없다.
- 대문자를 포함해서는 안 되며, require() 함수의 인수로 사용되며 짧고 알기 쉬운 것으로 짓는 것이 좋다.
version
- 프로젝트 버전을 정의힌다. 3단계 버전을 사용하며, - 로 태그 이름을 적을 수 있다.
description
- 프로젝트 설명으로, 문자열로 기술한다.
- npm search로 검색된 리스트에 표시되기 때문에 사람들이 패키지를 찾아내고 이해하는 데 도움이 된다.
keywords
- 프로젝트를 검색할 때 참조되는 키워드이다.
- description과 마찬가지로 npm search로 검색된 리스트에 표시된다.
homepage
- 프로젝트 홈페이지 주소이다.
- url 항목과는 다르며, url을 설정하면 예상치 못한 움직임을 하게 되므로 주의한다.
author
- 프로젝트 작성자 정보로, 한 사람만을 지정한다. JSON 형식으로 name, email, url 옵션을 포함한다.
contributors
- 프로젝트에 참여한 공헌자 정보로, 여러 사람을 배열로 지정할 수 있다.
repository
- 프로젝트의 소스 코드를 저장한 저장소의 정보이다.
- 소스 코드에 참여하고자 하는 사람들에게 도움이 될 수 있다. 프로젝트의 홈페이지 url을 명시해서는 안 된다.
scripts
- 프로젝트에서 자주 실행해야 하는 명령어를 scripts로 작성해두면 npm 명령어로 실행 가능하다. (이 부분 쓸만한듯)
"scripts": {"start": "node server.js"}
config
- 소스 코드에서 config 필드에 있는 값을 환경 변수처럼 사용할 수 있다.
"name": "foo",
"config": {
"port": "8080"
}
private
- 이 값을 true로 작성하면 중앙 저장소로 저장하지 않는다.
dependencies
- 프로젝트 의존성 관리를 위한 부분이다. 이 프로젝트가 어떤 확장 모듈을 요구하는지 정리할 수 있다.
- 일반적으로 package.json에서 가장 많은 정보가 입력되는 곳이다.
애플리케이션을 설치할 때 이 내용을 참조하여 필요한 확장 모듈을 자동으로 설치한다.
따라서 개발한 애플리케이션이 특정한 확장 모듈을 사용한다면 여기에 꼭 명시를 해주어야 한다. - 또한, npm install 명령은 여기에 포함된 모든 확장 모듈들을 설치하게 되어 있다.
devDependencies
- 개발할 때만 의존하는 확장 모듈을 관리한다.
engine
- 실행 가능한 노드 버전의 범위를 결정한다.
'개발자 학습노트 > * 학습일기*' 카테고리의 다른 글
항해 99 - 5주차 WIL : Team Play && CORS (0) | 2022.06.12 |
---|---|
항해 99 - 4주차 WIL : undefined / ORM, sql vs no sql (0) | 2022.06.05 |
항해99 주특기 숙련주차 개인과제 개인체크용 (Node.js) (0) | 2022.05.28 |
항해 99 - 2주차 WIL : 헬로 스파르타, KEEP 스파르타 / 자바스크립트 역사, ES (0) | 2022.05.22 |
항해 99 - 1주차 WIL : 묵묵히 걸어 들어가다 (0) | 2022.05.15 |
Comments