JS 알고리즘 문제풀이
JS의 다양한 메서드들을 적용시켜 프로그래머스 문제들을 해결하였다. map, filter, reduce 등의 메서드를 사용하면 단순히 for문보다 어떤 동작을 수행할 것인지 명시적으로 표현해주는 방법이 될 수 있다. 그러나, 2-demensional array를 완전 탐색하는 경우처럼 (arr[i][j]
) 이중 for 문이 더 가독성이 더 좋을 경우도 있기 때문에 상황에 맞게 적절한 메서드를 사용하는 것이 중요하다. (팀 컨벤션으로 이에 대해 정해져 있는 경우도 있다고 한다.)
Node 주특기 주차 시작
Express 프레임워크를 사용해서 노드 프로젝트의 기반을 다질 수 있는 주특기 주차가 시작되었다. 입문 강의를 듣고 서버 개발 연습을 해보았다.
프로젝트를 만들고 배포를 해보면서 노드 서버 개발을 스스로 해보자.
"Express는 미들웨어의 연속적인 체인이다!"
Express는 Node.js를 위한 웹 프레임워크로, API를 만들고 HTTP 요청과 응답을 처리하는 데 사용된다. 미들웨어 함수는 Express의 중요한 구성 요소로, 요청 처리를 위해 미들웨어 체인에 구성할 수 있다.
Express의 미들웨어 함수는 Express 애플리케이션 내에서 요청과 응답을 처리하는 데 사용된다.
미들웨어를 통해 우리는 공통적인 작업이나 기능을 모듈화하고 재사용할 수 있어 코드의 중복을 줄이고 유지보수성을 높일 수 있다. 예를 들면, 모든 response에 대해 header를 추가해주는 처리나, 모든 request에 대한 정보들을 로그로 남기는 처리 같은 공통적인 처리 부분을 하나의 미들웨어가 맡아서 처리를 하는 식으로 관리를 할 수 있다.
5개의 미들웨어를 가지고 있는 express 프로그램은 다음과 같이 차례대로 동작한다. 즉, Express에서 미들웨어 함수는 순차적으로 실행되며, 미들웨어 체인에 정의된 순서대로 실행된다. 미들웨어 함수의 순서는 요청과 응답의 처리에 영향을 미칠 수 있으며, 각 미들웨어는 요청이나 응답 객체를 수정한 뒤 다음 미들웨어나 라우트 핸들러에게 전달된다.
RESTful API는 REST (Representational State Transfer) arhitecture를 따르는 웹 서비스이다. REST는 클라이언트와 서버 간의 통신을 위한 원칙들의 집합으로, 네트워크 기반의 분산 시스템에서 리소스를 표현하고 상태를 전달하기 위한 아키텍쳐 스타일이다.
Content-Type
으로 나타나진다.리소스 중심(Resource-centric): Restful API는 서버가 관리하는 리소스(데이터 또는 기능)를 중심으로 설계됩니다. 각 리소스는 고유한 URI(Uniform Resource Identifier)로 표현되며, 클라이언트는 이 URI를 통해 리소스에 접근합니다.
- URL과 URI의 차이: 둘 다 인터넷에서 리소스를 식별하는 데 사용되지만, URI가 URL을 포함한다. URI는 URL (Uniform Resource Locator)과 URN (Uniform Resource Name)을 포함한다. URL은 인터넷에서 리소스의 위치를 식별하는 데 사용되고, URN은 리소스의 이름을 식별하는 데 사용된다.
Stateless(무상태): Restful API는 클라이언트와 서버 간의 상태를 저장하지 않습니다. 각 요청은 독립적으로 처리되며, 클라이언트가 요청을 보낼 때 필요한 모든 정보가 포함되어야 합니다.
HTTP 메서드 활용: Restful API는 HTTP 메서드를 활용하여 리소스를 다양한 작업(조회, 생성, 수정, 삭제 등)에 대해 처리합니다. 주요 HTTP 메서드인 GET, POST, PUT, DELETE 등이 사용되며, 각 메서드는 특정한 의미와 동작을 가지고 있습니다.
자체 표현(Self-descriptive): Restful API는 메시지 자체에 해당하는 정보를 통해 리소스를 표현합니다. 예를 들면, JSON 또는 XML 형태의 메시지를 통해 리소스를 표현하며, 클라이언트는 이 정보를 통해 리소스를 이해하고 처리할 수 있습니다.
클라이언트-서버 구조: Restful API는 클라이언트와 서버가 독립적으로 발전할 수 있는 구조를 가지고 있습니다. 클라이언트는 사용자 인터페이스를 담당하고, 서버는 비즈니스 로직과 데이터를 처리하는 역할을 담당합니다.