목록노드 (15)
개발스토리
자신이 만든 서비스가 제대로 동작하는 지 테스트해보기 위해 jest 패키지를 사용해보자. 테스팅 툴은 개발 시에만 사용하므로 npm i -D jest로 패키지를 설치한다. 테스트용 파일은 파일명과 확장자 사이에 spec이나 test를 넣으면 된다. 그러고 테스트 코드를 실행하면 파일명에 spec이나 test가 들어간 파일을 모두 찾아서 실행한다. test('100 + 100은 200이다.', () => { expect(100 + 100).toEqual(200); }); ■ test 함수의 첫 인수로는 테스트에 대한 설명을 적고, 두 번째 인수인 함수에는 테스트 내용을 적는다. expect 함수의 인수로는 실제 코드를, toEqual 함수의 인수로는 예상 결괏값을 넣으면 된다. ■ expect에 넣은 값과..
CORS CORS는 Cross Origin Resource Sharing의 약자로 포트 및 도메인이 다른 서버로 클라이언트가 요청했을 때 브라우저가 보안상의 이유로 API를 차단하는 문제이다. 같은 요청이라도 서버에서 서버로 보냈을 때는 되는데 브라우저에서 서버로 보내는 것이 안되니 당황스러울 수 있다. Node 서버에서 cors 이슈를 해결하는 몇가지 방법 1. 어떤 특정 요청에만 적용하고 싶다면 cross-origin을 허락하는 헤더를 추가한다. app.get('/', (req,res) => { res.header("Access-Control-Allow-Origin", "*"); ... } - "*"은 모든 요청 origin을 허용하는 것이기 때문에 위험하니 이 부분만 허용하는 origin으로 바꿔주..
JWT(JSON Web Token) JSON 형식의 데이터를 저장하는 토큰 JWT는 다음과 같이 세 부분으로 구성되어 있다. 헤더 : 토큰 종류와 해시 알고리즘 정보가 들어있다. 페이로드 : 토큰의 내용물이 인코딩된 부분 시그니처 : 일련의 문자열이며, 시그니처를 통해 토큰이 변조되었는지 여부를 확인할 수 있다. 시그니처는 JWT 비밀 키로 만들어 진다. 이 비밀 키가 노출되면 JWT 토큰을 위조할 수 있으므로 비밀 키를 철저하게 숨겨야 한다. JWT에는 민감한 내용을 넣으면 안된다. 내용을 볼 수 있기 때문이다. 내용이 노출되는 토큰을 왜 사용할까? 모순적이지만 내용이 들어있기 때문이다. 변조한 토큰은 시그니처를 비밀 키를 통해 검사할 때 들통이 난다. 변조할 수 없으므로 내용물이 바뀌지 않았는지 걱정..
Mongoose 노드와 몽고디비를 연동해줄 뿐만 아니라 쿼리를 만들어주는 라이브러리이다. 몽구스는 시퀄라이즈와 달리 ODM(Object Document Mapping)이라고 불린다. 몽고디비는 relation이 아니라 document를 사용하기 때문이다. 몽고디비 자체가 이미 자바스크립트인데도 굳이 자바스크립트 객체와 매핑하는 이유는 몽고디비에 없어서 불편한 기능들을 몽구스가 보완해주기 때문이다. 먼저 스키마라는 것이 생긴다. 몽고디비는 테이블이 없어서 자유롭게 데이터를 넣을 수 있지만, 때로는 자유로움이 불편함을 초래한다. 실수로 잘못된 자료형의 데이터를 넣을 수도 있고, 다른 다큐먼트에는 없는 필드의 데이터를 넣을 수도 있다. 몽구스는 몽고디비에 데이터를 넣기 전에 노드 서버 단에서 데이터를 한 번 ..