Path parameter URL로는 고유한 자원(resource, data)을 지칭할 수 있습니다. http://naver.com/stocks http://tistory.co.kr/blogs 등을 보면 알 수 있죠. 그러나 특정 자원을 가리키는 url 경로에 가변적인 부분이 있다면 어떻게 될까요? http://naver.com/stocks/kakao 라는 주소는 직관적으로 kakao사의 주식 정보를 나타냄을 알 수 있습니다. 이 상황에서 회사의 이름 부분은 다른 회사에 대한 정보를 요청할 때에는 언제든지 바뀔 수 있는 가변적인 자리입니다. http://naver.com/stocks/uber http://naver.com/stocks/samsung-electronics 등으로 가리키는 특정 리소스가 변경..
REST API Representational State Transfer API - 상태를 전달하는 것을 나타내는 방법 통신을 한다는 것을 다음과 같이 풀어서 설명하는 방법입니다. ‘특정 자원(데이터)을 어떤 방식으로 전달하는 것’으로 간주하고, 이를 표현하는 방식을 통일하여, 개발자들 사이에서 의사소통을 원활히 하고자 했죠. 요청에는 여러 종류가 있습니다. 아래 간단한 예시들을 확인해볼까요? Client가 user(What) 정보를 가져오고자(How) 요청하는 것 Client가 1번 음료(What)의 정보를 가져오고자(How) 요청하는 것 Client가 2번 음료(What)를 주문하는 정보를 서버에 주며(How) 주문을 요청하는 것 요청을 자세히 보면 크게 두 부분으로 나뉘어 있다는 것을 알 수 있습니..
Controller Error 컨트롤러는 표현 계층, 즉 입력과 출력에 관련한 부분을 담당합니다. HTTP 통신을 처리하는 웹 서버의 관점에서는 http request (요청 입력), http response (응답 출력)을 담당하는 레이어입니다. 따라서 통신이 처음 시작될 때, 사용자로 부터 받은 정보를 클라이언트(프론트엔드)가 전달해주면, 해당 입력에 대한 유효성 검증을 처리하며 에러 및 예외가 발생할 수 있습니다. KEY_ERROR가 대표적입니다. Request로 들어와야하는 정보 가운데 누락된 key가 있을 때를 지칭합니다. 클라이언트가 키를 누락시켰다는 것은, request body라는 객체 안에 email 이라는 특정 키가 없는 것을 말합니다. 회원가입 시 email, password 등 필수..
Error handling 의 목적 개발자는 사용자가 서비스를 이용하는 동안 발생할 수 있는 에러를 미리 사전에 예측하여, 이용자의 사용 흐름이 막히지 않도록 유도해야합니다. 이런 과정을 에러 핸들링이라고 합니다. 에러 핸들링은 사용자로 하여금 서비스가 다시 안정화될 것이라는 믿음을 주고, 서비스 이용자의 이탈을 방지하기 위한 수단으로도 사용됩니다. Error handling 의의 에러 핸들링은 엄밀히 말해, 에러 핸들링(Error Handling)과 예외 핸들링(Exception Handling) 두가지 종류로 구분됩니다. 에러와 예외 상황은 발생 상황과 발생 주체가 다릅니다. 에러는 컴퓨터가 내지만, 예외는 개발자가 의도적으로 발생시키는 것이죠. 에러는 언어의 문법 에러, 통신 장애로 발생하는 에러등..
코드 구조화를 하면서 엔드포인트를 router를 이용하여 분리하였습니다. 기존에는 app = express() app.get('/users/signup' , async(req,res) => {내용} 이렇게 작성했다면 파일을 여러개로 분리하여 index.js 파일에 const userRouter = require('./userRouter') const router = express.Router() router.use('/users', userRouter) userRouter.js 파일에는 const router = express.Router() router.post('/signup', userController.signUp) 이런식으로 파일을 분리하여 엔드포인트를 지정해 주었습니다. 사실 이것이 코드 전체..
코드 구조의 중요성 음... 저는 지금 express의 모든 메소드를 한 파일에 넣어놓았습니다. get 부터 delete 까지 전부다요. 지저분한 저의 js파일은 부끄럽게 짝이 없기 때문에 API 구조화를 해보려고 합니다. 당연히 한 파일안에 있으면 구현하기 간단합니다. 하지만... 저도 한 7~8개의 기능만 구현해 놓았는데 제가 어디에 무엇을 써놓았는지 알지 못하겠더라고요! 특히, 기업 시스템에서 하나의 파일에 모든 코드를 넣는 경우는 거의 없습니다. 기능적으로 영역을 구분하여 개별 코드를 관히하는 것이 좋습니다. 코드의 구조를 더 체계적으로 그리고 효율적으로 구현해 놓은 것을 코드의 아키텍처(architecture)라고 합니다. 코드를 어떤 기준으로 나누어 구조화해야 하는지 알아봅시다! 1. 확장성 ..