프로그래밍📚

백엔드 서버 구축을 하다 보면 많이 듣는 단어가 바로 "MVC패턴"인데요. 그렇다면 MVC 패턴이 무엇일까요? MVC패턴은 Model-View-Controller의 약자며, 각각의 성격에 맞는 코드를 작성을 하게 됩니다. 하지만 node에는 Router라는 개념이 추가되어 있는 상태입니다. 그렇다면 node의 파일구조는 어떻게 되어있는 건지 알아봅시다. Router에는 어떤 코드를 작성하나요? Router에는 기본적으로 경로를 설정하고, 핸들링이라 부르는 로직까지 작성을 합니다. 이렇게 라우터에서 경로 및 로직까지 다 수행하게 되는 경우에는 단점이 존재하게 되는데요 프로젝트의 규모가 커질수록 코드가 복잡해집니다. 가독성을 떨어뜨립니다. 오류를 찾고 그를 해결하는 작업도 힘이 듭니다.(트러블슈팅) 즉, 유..
유효성 검사(validation)란? 사용자가 입력한 값의 유효성을 검사하는 것을 말합니다. 즉, 타당성을 확인하는 작업입니다. 예시. 회원가입할때 조건을 생각해 봅니다. email 값이 존재해야 한다. ~~~~@email.com 형태여야 한다. password 값이 존재해야 한다. 최소 숫자와 영문 한 글자씩은 포함한 4글자 이상 이어야 한다. name 값이 존재해야 한다. 숫자가 들어오면 안 되고 문자열이어야 하며 2자 이상 이어야 한다. 그렇다면 이 많은 조건들을 어떻게 확인을 해야 할까요? if를 통해서 작업을 하게 되면 if 대 잔치가 벌어지기 때문에 우리는 이것을 유효성 검사를 통해서 진행을 하려고 합니다. 어떻게 유효성 검사를 할 수 있을까요? express-validator 우리는 유효성검..
express의 가장 큰 장점인 routing은 Request가 왔을 때 원하는 경로에 따라 적절한 방향으로 경로를 안내해 주는 것을 말합니다. 쉽게 말해서 URI와 method에 맞는 콜백함수를 어떤 걸 호출할지 알려주는 것을 의미합니다. router는 어떻게 이용하는 걸까요? express의 router를 사용하기 위해 필요한 파일 및 폴더 /routes /router.js /app.js router를 사용하기 위해서는 기본적으로 서버 구동을 시킬 app.js와, routes 폴더가 필요합니다. app.js에서는 전반적인 서버 설정 관련 코드들이 있다면 routes 폴더에는 여러 router파일들이 모여있는 것을 말하는데요. 이때 이 router.js는 특정 기능끼리 묶어서 사용하는 경우가 많습니다...
Object를 이용한 객체 확인 const obj = {} const obj2 = {message : '안 빈 객체'} console.log(Object.keys(obj)) // [] console.log(Object.keys(obj2)) // ['message'] 여기 두 가지의 객체가 존재합니다. 첫 번째는 빈객체, 두 번째는 비어있지 않은 객체, 이 두 객체를 console.log로 찍어보면 첫 번째 객체는 빈 배열, 두 번째 객체는 message가 들어있는 배열이 나오는 걸 확인할 수 있는데요. 즉, 객체안의 key값을 받아오는 함수가 바로 keys입니다. (이 keys는 Object 뿐만 아니라 Map에서도 사용되니 참고하면 좋을것 같네요.) 배열 안에 들어가 있으니 우리는 이 배열의 길이를 잴..
프론트엔드와 협업 시, 백엔드에서 예외처리를 해주면 좋은 코드를 알려드리려고 합니다. 이전에 작성했던 예외처리는 백엔드 프론트엔드 둘 다 사용이 가능한데요. https://code-dung.tistory.com/56 안정성을 위한 예외 처리(기본) 코드를 작성하다 보면 에러들을 많이 만나게 되는데요. 메모리부족이나 스택오버플로우 심각한 에러가 있는 반면에 수습 할 수 있는 심각도가 낮은 에러도 존재합니다. 이때 우리는 심각도가 code-dung.tistory.com 지금부터 알려드릴 코드는 프론트엔드를 위한 백엔드의 예외 처리 코드입니다. res.json(result); 여기까지만 작성을 했다면 성공을 했던 실패를 했던 전부 status code가 200으로 넘어가게 됩니다. if(!결과){ // 조건 ..
ES6에서 도입된 find는 배열의 요소에 순회하면서 콜백함수를 호출하여 반환값이 true인 것을 찾는 것을 말합니다. 이때 true 값이면 첫 번째 요소를 반환하고, true 값이 없을 경우에는 undefined를 반환합니다. find가 없었을 때 코드 let result = ''; arr.forEach((v) => { if (v.id == id) { result = v; } }); forEach를 이용하여 조건절을 삽입해 값이 일치할 경우에 result에 값을 담아서 사용했었는데요 이때 find를 사용하면 조금 더 간편하게 코드를 짤 수 있습니다. find 활용 코드 let result = arr.find((f) => f.id == 0); find를 이용했을때 코드가 단순화된 걸 확인할 수 있는데요...
코드를 작성하다 보면 에러들을 많이 만나게 되는데요. 메모리부족이나 스택오버플로우 심각한 에러가 있는 반면에 수습 할 수 있는 심각도가 낮은 에러도 존재합니다. 이때 우리는 심각도가 낮은 에러를 예외 처리를 통해서 동작하지 않는 상황을 막을 수 있는데요. 지금부터 예외 처리를 어떻게 하는지 알아볼까 합니다. 기본적으로 예외처리를 어떻게 하는건지 얘기를 해봅시다. app.delete("/youtubers/:id", (req, res) => { let id = req.params.id; id = parseInt(id); const name = db.get(id).chennelTitle; db.delete(id); res.json({ message: `${name}님, 그동안 이용해 주셔서 감사했습니다.` }..
forEach와 map 함수는 기본적으로 형태와 동작원리가 같습니다. 그렇다면 무슨 차이가 있는 걸까요? forEach와 map함수에 대해서 알아봅시다. forEach와 map의 형태 const arr = [1,2,3,4] //arr.forEach(콜백함수(매개변수 value, index, array)) arr.forEach((value, index, array)=>{}) //arr.map(콜백함수) arr.map((value, index, array)=>{}) forEach와 map의 동작원리 foreach는 for문처럼 반복을 하는데 배열에서 요소 하나를 꺼낸 다음에 콜백함수 안의 코드들을 동작을 하게 됩니다. 즉 배열 각각의 인덱스에서 콜백함수 안의 코드를 반복을 한다는 뜻입니다. 그리고 콜백함수는..
API 설계는 거창한 게 아니라 쉽게 말하자면 URI(URL)과 method로 이루어져 있는 것을 말합니다. 그렇다면 어떻게 API설계를 하면 될까요? ✨ localhost:8080/users/:id에 접속을 하면 id를 map에서 객체를 찾아 해당 객체의 정보를 넘김 URI : localhost:8080/users/:id method : GET - req : params.id(유저의 번호로 map에 저장된 key값을 전달하는데 사용) - res : map에서 id로 객체를 조회해서 정보를 전달 ✨ localhost:8080/users에 접속하여 data를 입력한뒤 서버에 전송을 하면 유저 등록 URI : localhost:8080/users method : POST - req : req.body로 유저..
코드둥
'프로그래밍📚' 카테고리의 글 목록 (4 Page)