Restful API/package.json

Tacocat·2022년 1월 30일
0

Javascript

목록 보기
2/4

Restful API

우선 Restful API에서 REST는 Representational State Transfer의 줄임말이다. 직역하자면 '대표적 상태 전달'이며,이를 좀더 이해하기 쉽게 풀어보자면 요청받은 데이터를 대표할 수 있는 명칭으로, 요청받은 그 시점의 상태(데이터값)을 전달하는 것이다. 예를 들면 옷가게에서 전체 옷들을 대표할 수 있는 명칭은 '옷'이며, 특정한 하나의 옷에 대한 데이터를 대표하는 명칭은 그 옷이 가진 이름이다.
따라서 Restful API는 API를 REST한 방식으로 설계하는 것을 의미한다. 즉 추상적이거나 의미가 명확하지 않은 표현들을 피하고, 명칭을 봤을 때 누구나 그것이 어떤 의미인지 쉽게 파악할 수 있고 사용하기도 쉬운 방향성을 추구하는 것이다.
이는 URI에는 대표할 수 있는 명칭을,
요청에는 HTTP Method인 GET, POST, PUT, DELETE을 사용해 이 둘을 결합해서 나타내게 된다.
위의 옷가게를 다시 한번 예로 들자면 다음과 같이 표현할 수 있다.

전체 옷에 대한 데이터를 요청 : GET, /clothes
특정한 하나의 옷에 대한 데이터를 요청 : GET, /clothes/:id
특정한 하나의 옷에 대한 데이터를 생성 : POST, /clothes/:id
특정한 하나의 옷에 대한 데이터를 수정 : PUT, /clothes/:id
특정한 하나의 옷에 대한 데이터를 삭제 : DELETE, /clothes:id

package.json

package.json은 애플리케이션과 상호작용 및 구동하는 방법을 담은 json형식의 파일이다. 직접 작성할 수도 있고 npm init 명령을 통해 자동으로 생성할 수도 있다.
package.json은 다음과 같은 항목들을 지니고 있다.

"name" : "example-project"

name은 패키지의 이름을 정의한다. 214자를 넘을 수 없고, url로 사용되고 디렉토리 이름이 되기 때문에 이 둘에서 사용할 수 없는 이름을 마찬가지로 사용할 수 없다.(소문자 및 하이픈, 밑줄이 허용되지만 공백 및 기타 문자는 사용할 수 없다.)
패키지를 npm에 게시하는 경우 name은 필수이며 고유한 값을 지녀야 한다. 그렇지 않으면 오류가 발생하게 된다.

"version" : "2.2.4",

version은 소프트웨어의 현재 버전을 정의한다. Node.js의 생태계에서 SemVer형식을 표준으로 사용하고 있기 때문에 해당 형식이 적극 권장된다.

"author" : "tacocat@email.com http://www.tacocat.taco/#taco",
"contributor" :
[{
"name" : "example",
"email" : "example@test.com",
"url" : "https://www.exampletaco.com/#taco
}],

author는 프로그램을 작성한 한 사람만을 지정하며, json형식에 따라 name, email, url을 포함할 수 있다(선택 사항)
contributor는 프로그램에 기여한 기여자들에 대한 정보를 담은 정보로 작성 형식은 author와 동일하지만 여러 사람을 포함할 수 있다.

"description" : "javascript's word finder"

description은 문자열 형식으로 작성되며, npm 레지스트리에서의 검색 결과 및 npmjs.com 사이트에서 패키지를 설명하는 데 사용된다. 따라서 다른 이용자가 패키지를 찾고 이해하기 쉽도록 패키지에 대한 짧은 요약이어야 한다.

"keyword" : ["server", "express", "finder", "word"]

keyword는 여러 사이트에서 사용되는 태그와 동일한 기능을 수행한다. description처럼 검색된 결과에 표시되며, 패키지를 찾는데 도움을 주는 역할을 지닌다.

"main" : "src/index.js",

main은 프로젝트의 진입점을 정의하며 일반적으로 프로젝트를 시작하는 데 사용된다.

"repository" :
{"type" : "git",
"url" "https://gith1ub.com/testtest/test.git",
}

repository는 프로젝트의 소스코드가 저장된 곳을 나타낸다. repository의 URL은 버전 제어에 접속할 수 있는 위치를 가리켜야 한다.

"dependencies":
{
"test1": "^2.2.7",
"compression": "~5.7.4"
"example" : "~4.4.6"
}

dependencies는 package.json에서 가장 중요한 필드 중 하나이다. 이 프로젝트가 의존하는 외부의 확장 모듈 목록을 담고 있으며, 애플리케이션 설치 시 이 목록을 참조하여 필요한 확장 모듈을 자동으로 설치하기 때문에 구동에 필요한 모듈을 반드시 명시해주어야 한다.

"devDependencies":
{
"test2": "^1.2.9",
}

devDependencies는 dependencies와 유사하지만 개발 시에만 필요하고 실제 구동에는 필요하지 않은 확장모듈의 목록을 담고 있다.

"scripts":
{
"start": "node index.js",
"dev": "tacocat"
}

scripts는 프로젝트에서 실행할 수 있는 명령어를 담고 있다. 이 곳에 담긴 명령어는 npm명령어로 실행이 가능하기 때문에 작업을 원활하게 만들어준다.

"config" :
{
"port" : 8080"
}

config는 패키지 버전에 관계없이 프로젝트의 구성 매개변수를 설정하는 데에 사용할 수 있는 값을 담고 있다.

"engine" :
{
"npm" : "~1.1.2"
}

engine은 실행 가능한 npm버전 범위에 대한 정보를 담고 있다.

참조 및 출처 :

https://m.blog.naver.com/azure0777/221066646741 (REST, RESTful API란?)
https://en.wikipedia.org/wiki/Representational_state_transfer (Representational state transfer
https://heynode.com/tutorial/what-packagejson/ (what is package.json?)
https://docs.npmjs.com/cli/v7/configuring-npm/package-json (package.json)
https://edu.goorm.io/learn/lecture/557/%ED%95%9C-%EB%88%88%EC%97%90-%EB%81%9D%EB%82%B4%EB%8A%94-node-js/lesson/174371/package-json (package.json)

profile
개발자 꿈나무

0개의 댓글