그저 내가 되었고

항해99) 3주차:: 💡3주차 맺음 WIL; Restful API, package.json + 소회✍🏻 본문

개발/항해99 9기

항해99) 3주차:: 💡3주차 맺음 WIL; Restful API, package.json + 소회✍🏻

hyuunii 2022. 10. 9. 23:17

📚 Restful API; Representational State Transfer API

Restful API란?

컴퓨터 시스템이 인터넷을 통해 정보를 안전하게 교환하기 위해 사용하는 인터페이스. RESTful API는 안전하고 신뢰할 수 있으며 효율적인 소프트웨어 통신 표준을 따르므로 다양한 정보 교환을 지원할 수 있음.

 

REST란?

Representational State Transfer(REST)는 API 작동 방식에 대한 조건을 부과하는 소프트웨어 아키텍처이다. REST 기반 아키텍처를 사용하여 대규모의 고성능 통신을 안정적으로 지원할 수 있다. 또한 쉽게 구현하고 수정할 수 있어 모든 API 시스템을 파악하고 여러 플랫폼에서 사용할 수 있다.

API 개발자는 여러 아키텍처를 사용하여 API를 설계할 수 있다. REST 아키텍처 스타일을 따르는 API를 REST API라고 한다. RESTful API라는 용어는 일반적으로 RESTful 웹 API를 나타내지만, REST API와 RESTful API라는 용어는 같은 의미로 사용할 수 있다.

구체적으로는 HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고, HTTP Method(POST, GET, PUT, DELETE)를 통해 해당 자원에 대한 CRUD Operation(Create : 생성(POST), Read : 조회(GET), Update : 수정(PUT), Delete : 삭제(DELETE), HEAD: header 정보 조회(HEAD))을 적용하는 것을 의미한다. 

 

API란?

다른 소프트웨어 시스템과 통신하기 위해 따라야 하는 규칙을 정의함. 개발자는 다른 애플리케이션이 프로그래밍 방식으로 애플리케이션과 통신할 수 있도록 API를 표시하거나 생성함. 예를 들어, 근무 시간 기록 애플리케이션은 직원의 전체 이름과 날짜 범위를 요청하는 API를 표시함. 이 정보가 수신되면 내부적으로 직원의 근무 시간 기록을 처리하고 해당 날짜 범위에서 근무한 시간을 반환한다.

웹 API는 클라이언트와 웹 리소스 사이의 게이트웨이라고 생각할 수 있다.

 

Restful API의 장점은?

확장성: REST API를 구현하는 시스템은 REST가 클라이언트-서버 상호 작용을 최적화하기 때문에 효율적으로 크기 조정할 수 있다. 무상태는 서버가 과거 클라이언트 요청 정보를 유지할 필요가 없기 때문에 서버 로드를 제거한다. 잘 관리된 캐싱은 일부 클라이언트-서버 상호 작용을 부분적으로 또는 완전히 제거한다. 이러한 모든 기능은 성능을 저하시키는 통신 병목 현상을 일으키지 않으면서 확장성을 지원한다.

유연성: RESTful 웹 서비스는 완전한 클라이언트-서버 분리를 지원합니다. 각 부분이 독립적으로 발전할 수 있도록 다양한 서버 구성 요소를 단순화하고 분리한다. 서버 애플리케이션의 플랫폼 또는 기술 변경은 클라이언트 애플리케이션에 영향을 주지 않는다. 애플리케이션 함수를 계층화하는 기능은 유연성을 더욱 향상시킨다. 예를 들어, 개발자는 애플리케이션 로직을 다시 작성하지 않고도 데이터베이스 계층을 변경할 수 있다.

독립성: REST API는 사용되는 기술과 독립적이다. API 설계에 영향을 주지 않고 다양한 프로그래밍 언어로 클라이언트 및 서버 애플리케이션을 모두 작성할 수 있다. 또한 통신에 영향을 주지 않고 양쪽의 기본 기술을 변경할 수 있다.


🎯 Package.json

1) npm: node package manager

node.js 패키지(개발자들이 만든 일련의 유용한 도구 및 프레임워크)를 빠르고 쉽게 공유할 수 있게 하는 패키지 매니저이자 node.js를 위한 오픈소스 생태계. npm은 node.js에서 사용하는 모듈들을 패키지로 만들어 관리하고 배포하고 있다. 

개발자는 단 몇 줄의 명령어로 기존에 공개된 모듈들을 설치하고 활용할 수 있다. 프로그램보다 조금 작은 단위인 이 모듈들을 필요에 따라서 이런 저런 모양으로 쌓아서 활용을 할 수 있는데, 이걸 하기 위해선 npm을 깔고 터미널에서 npm install 모듈명 입력하면 된다.

 

2) package.json

npm을 설치하면(npm init -y) 바로 package.json 파일과 package-lock.json파일이 생성된다. 전자는 설치한 패키지들의 상세 사용 설명서라고 보면 된다. 패키지의 이름, 버전, 데이터 등의 정보가 담겨있다. 일반적으로 루트 디렉토리에 위치한다. 후자는 어떤 패키지들이 어떤 버전으로 설치되었는지 기록해놓은 파일. 이 파일이 있으면 협업할때 같은 환경으로 개발할 수 있게 도와준다.


💛 소회

....너무 어렵다! 진짜로 어렵다....

한 줄 한 줄, 한 단어 한 단어 다 쪼개서 이해하고싶은데 이게 도통 쉽지가 않다.

지금 한꺼번에 너무 많은 정보를 단시간에 머리에 쑤셔넣고 있는데다가.. 그 정보가 생전 본적 없는 너무나도 생소한 것들이라서 더더욱 상황이 심각하다...T T

다~ 못하면ㅋㅋㅋㅋㅋㅋ '걍 그런갑다..'하고 치우고 말겠는데, 하필! 내 주위에!!!! 잘하는 사람이 너무 많다....... 짜증<<<<

보고있으면 신기하고, 부럽고, 배도 아팠다가, 뭐 그렇다(..)

어떻게든, 정말 어떻게든 포기만 하지 않고 끝마치고 싶다는 생각뿐이다,,, 정말 개발자가 하고싶다고!!!!!T T

가장 문제되는건 내 자의식이다..... 그럭저럭 아주 못하는건 아닌데도(정말? 그렇겠지? ..........?) 혼자 자학하다가 자멸해버리는게 제~~~~~~~일 최악이다!!!!!!! 그 짓만 하지 말자. 도와준다는 사람들 꽉 붙잡고 어떻게든 도움 받자.

목표를 위해서 수단과 방법을 가리지 않을테다... 에고, 이드 다 내려놓고 그냥 '주니어 개발자'라는 목표 하나에만 집중하자💪🏻