< restAPI >
프론트엔드에서 백엔드로 API 요청할 때 필요한 것이 Axios=> 프론트엔트 컴퓨터에 Axios 깔려있어야함.
axios. 하면 백엔드로 요청이 감. 백엔드 서버는 켜져 있어야 함.
< CORS: cross origin resource sharing >
브라우저가 기본적으로는 aaa.com의 데이터 접근을 차단한다. 그러나 백엔드에서 aaa.com의 접속을 허용하는 CORS를 보내면 브라우저에서 이를 인식하고 허용한다.(포스트맨과 모바일에서는 잘되는데 브라우저는 브라우저가 막고 있어서 안 된다.)
< GraphQL >
그래프큐엘에서 API를 resolver라고 부른다.
그래프큐엘은 return 타입이 좀 더 엄격하다.
그래프큐엘에서는 함수 인자로 저렇게 4개가 들어오는데 프론트에서 요청할 때 들어오는 내용들은args로 들어오기 때문에 args(argument)를 주로 쓴다.
(context는 req,res정보를 받을 수 있다.info는 API에 대한 정보들.)
그래프큐엘은 들어오는 정보에 대한 타입설정과 return되는 데이터의 타입설정이 좀 더 까다롭다. 들어오는 데이터를 명시하고 타입을 설정해주는 모습이다.
4번 째 줄에서 인자의 요소를 하나로 묶고 위에 그 객체의 타입들을 지정해주는 모습. 근데 input이라는 이름으로 붙여줘야한다(중요)! 프론트엔드와 상호작용하는 부분이라 input이라 작성하는 것이 에러가 안 난다.
아래 10번째 줄에 있는 것은 type인데 이것은 보내주는 것이라 상관없다.
=> 백엔드가 보내주는 것은 type, 프론트엔드에서 받아오는 타입은 input.(굉장히 중요하다!)
< 동기와 비동기 방식 >
동기 방식은 a,b가 공유자원을 사용하기 원할 때 먼저 온 a가 작업을 마친 후에 b가 공유자원을 사용하는 방식.공유자원이 없을 때에는 비동기 방식.
자바스크립트는 동기방식으로 작동하는데 자바스크립트 코드 안의 라이브러리는 공유자원이 없기 때문에 비동기 방식으로 작동한다. 그래서 async/await 문구를 써서 동기화방식으로 만들어준다.=> 한줄 완료되면 다음 줄 갈수 있게 만들어준다.
restful하게 endpoint를 작성하는 방법. /뒷부분을 일치시키고 매소드에만 변화를 준다.
데이터베이스는 크게 SQL과 NoSQL이 있다. SQL은 표처럼 생긴 형태이고 table이라고 부른다. NoSQL은 A4용지 여러장이 모인 것처럼 생겼는데 이 모여있는 전체를 collection이라 부른다. A4용지 한장에는 객체형식으로 데이터가 담겨있다.
SQL의 데이터 한줄을 row, NoSQL의 A4용지 한장은 Document. SQL은 관계형 데이터베이스를 만들 수 있다.
백엔드컴퓨터에서 DB컴퓨터로 연결할 때 설치해야 하는 도구가 있다.
=>데이터베이스가 SQL이면 ORM(객체와 관계형 데이터베이스를 맵핑해준다.), NoSQL이라면 ODM(객체와 문서형 데이터베이스를 맵핑해준다.)
< Docker >
쉽게 말하면 가상컴퓨터. 내 컴퓨터 안에 컴퓨터를 여러 대 만드는 것.
사용하는 이유는 백엔드컴퓨터,DB컴퓨터 따로 있으면 효율적이라 Node.js용 하나, MySQL 하나 등으로 해놓으면 효율적이다.
도커를 쓰는 이유 중 하나는 '운영체제마다 달라지는 환경'을 통일시켜준다. 근데 운영체제의 핵심기능(커널)은 공유를 히는 가상머신이라 속도가 빠르다. => 운영체제를 새로 설치 안 해도 됨.
도커의 장점들. 그리고 가볍다는 장점도 있다.(운영체제를 새로 깔지 않아도 됨.)
도커(Docker)
도커 가상컴퓨터를 만들기 위해서는
우선, Dockerfile을 만들어야 한다. 그리고 제일 먼저 리눅스 깔아야함.
도커도 깃허브나 Npmjs.com처럼 도커허브에서 다른 사람들이 올린 컨테이너를 다운받을 수 있다.(우분투 깔린 컴퓨터, 노드제이에스 깔린 컴퓨터...)
docker build를 하면 Dockerfile의 명령어가 실행되면서 깔리는데 그 최종 결과물을 '이미지'라고 부른다.
FROM은 도커허브에서 이미지 다운받는 것 :숫자는 버전을 의미.
COPY는 내 컴퓨터에서 도커의 컴퓨터로 파일 복사하는 것.
WORKDIR는 working directory의 약자로 어디 위치에서 처음에 실행할지 설정해주는 것이고 CMD(=RUN)는 명령어에 붙여주는 것이다.
(RUN은 여러번 쓸 수 있고, CMD는 한번만 가능-> 마지막에 최종명령어로 CMD 쓰기).