Node Js 복습 (1)

dosiri_·2021년 9월 8일
0

복습

목록 보기
1/14
post-thumbnail

1. HTTP

HTTP: 80번 포트 사용 (https는 433번)
연결상태를 유지하지 않음

2. Req Res

1)request 메세지

  • Status line : 통신 메소드(get, post, put, delete 등) / url / http 버전
  • Header : Content-type
  • A blank line
  • Body: 데이터가 html / json/ xml/ form-data 등 형식으로 들어감

2) response 메세지

  • Status Line: status code: 100~500번대 (200 이 아니면 에러)
  • Header : Content-type
  • A blank line
  • Body: 데이터가 html / json/ xml/ form-data등 형식으로 들어감

둘이 뭔가 비슷한 구조다.

3. express 구축

1) express --view=ejs express_test
2) cd 작업폴더 로 이동한 후 npm install
3) nodemon은 g로 설치해뒀으니 node를 nodemon으로 바꿔주고
npm run start

"start" 를 "dev"로 바꿔놓고 진행했다.

4. 요청방법

req.params - /:id -> const{id} = req.params
req.query - /?name=lee -> const{name} = req.query

-> 이 두가지 방법은 보안이 취약(url에 나옴) but 빠르다
get, delete 메소드에서 많이 씀

req.body - const{ ~ } = req.body
-> 보안 중요 / post, put 메소드 주로 씀

req.file

5. 라우터 실습

	const express = require("express");
        const router = express.Router();

        const usersRouter = require("./users/index");

        router.use("/users", usersRouter);
    

라우터를 모듈화하는 방식으로( 프로젝트 규모가 커지면 관리가 어려우므로)
최상위 index.js 폴더에 usersRouter을 가져와서 쓰는 방식을 배웠다.

router폴더에 users폴더를 생성해주고 세부 내용을 안에 만들어 export해서 쓴다.

users폴더 내의 라우터는

	const express = require("express");
	const router = express.Router();
    
    	// 유저 생성
    	const usersArr = [];

      router.post("/", (req, res) => {
      	const { name, age, love } = req.body;
      	const userIdx = usersArr.findIndex((item, index) => {
       		return item.name === name;
     	 });
      
        if (userIdx === -1) {
          usersArr.push({
            name,
            age,
            love,
          });
          console.log(usersArr);
          res.status(200).json({
            message: "유저가 성공적으로 생성 되었습니다.",
          });
        } else {
          res.status(409).jseon({
            message: "중복된 이름이 존재합니다",
          });
        }
      });
    
      module.exports = router;
    

유저 '생성'이 목적이니 method는 post!

라우터를 모듈화했으니 users 폴더 내의 라우터 url은 "/"으로 시작!

	//유저 조회
    router.get("/:name", (req, res) => {
      const { name } = req.params;
      const findUser = usersArr.findIndex((item) => item.name === name);

      if (findUser === -1) {
        res.status(404).json({
          message: "유저 정보가 없습니다.",
        });
      } else {
        const result = usersArr[findUser];
        res.status(200).json({
          message: "유저를 찾았습니다.",
          data: {
            name,
            age,
            love,
          },
        });
      }
    });
    

생성된 데이터를 조회하는 것이니 get을 사용!

    const findUser = usersArr.findIndex((item, index) => {
            return item.name === name;
      });

처음에 findUser을 만들때 이렇게 작성을 했더니 에러가 떴다.

같은거 아닌가..
이해가 안된다ㅠ

      //유저 수정
      router.put("/:idx", (req, res) => {
        const { idx } = req.params;
        const { name, age, love } = req.body;

        if (usersArr[idx]) {
          // 유저가 있을 경우
          usersArr[idx] = { name, age, love };
          res.status(200).json({
            message: "수정 완료",
            data: usersArr[idx],
          });
        } else {
          res.status(400).json({
            message: "유저를 찾지 못했습니다.",
          });
        }
      });

url 에 params를 이용한 접근

등 등 여러가지 만들어 보았다.

중요한건 라우터를 모듈화하는 것과 메소드를 선택하는 것

밑의 로직들은 아직 Js가 익숙하지 않아서 많이 헤매고있다 ㅠ

6. URI 와 URL 차이

식별자 / 지시자(어디 있는지 알려주기 위함)
URL 은 URI에 포함되는 개념이다.
끝에 확장자(html, js .....)가 있으면 url

7. CRUD

Create Read Update Delete
컴퓨터 소프트웨어의 기본적인 데이터 처리 기능

8. API

Application Programming Interface
웹 API는 웹 애플리케이션 개발에서 다른 서비스에 요청을 보내고 응답을 받기 위해 정의된 명세

9. REST

REpresentational State Transfer
웹의 장점을 최대한으로 활용할 수 있게 하는 아키텍처

URI 에 resource의 수준별로 설계하는 것이라고 이해했다..

첫 번째, URI는 정보의 자원을 표현해야 한다.
두 번째, 자원에 대한 행위는 HTTP Method(GET, POST, PUT, DELETE)로 표현한다.

이 둘이 제일 중요함

내일은 흐름제어에 대해 배운다.

수업 막바지에 찍먹정도만 했는데 벌써 어려웠다...

고생합시다

1개의 댓글

comment-user-thumbnail
2021년 9월 9일

잘 보고 갑니다 열심히 하는 모습 너무 보기 좋아요 findIndex 함수에 대한 이해가 제대로 이루어지길 바라요

답글 달기