본문 바로가기

내일 배움 캠프/정예반 일지

정예반 일지 20230626

728x90

통신 : 요청과 응답

 

요청 : header와 body 로 구성
응답 : header와 body 로 구성

 

“고유값” 을 받아야 특정한 게시글을 보낼 수 있음

 

Get 얻다
Post 추가
Put 수정
Delete 삭제

 

브라우저는 Get 요청만 함

 

unique한 값은 사용자에게 안 받음
작성일도 사용자에게 안 받음


body에 데이터를 넣을 때 보통 JSON 형식으로 넣음

 

JSON은  문자열
Object 는 객체

 

JSON형식에 맞춰서 적으면 Object로 변환 가능
JSON.parse() 객체 생성
JSON.stringify() 문자열 생성

 

JSON 은 대부분 문자열이 아닌
JSON 이란 JSON 양식을 (포맷)을 따른 문자열일 뿐이다 라고 생각해주시면 됩니다

즉 JSON 을 Object 처럼 쓸려면 JSON 문법으로 작성된 문자열을 Objet 로 변환해야한다 그 기능은 JSON.parser(JSON 문법의 문자열)

https://jsonlint.com 

 

const express = require("express");
const app = express();
const port = 3000;

const posts = [
  {
    id: 1,
    user: "Aidan Johnson",
    tittle:
      "eget tincidunt dui augue eu tellus. Phasellus elit pede, malesuada",
    contents:
      "mi eleifend egestas. Sed pharetra, felis eget varius ultrices, mauris ipsum porta elit, a feugiat tellus lorem eu metus. In lorem. Donec elementum, lorem ut aliquam iaculis, lacus pede sagittis augue, eu tempor erat neque non quam. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Aliquam fringilla cursus purus. Nullam scelerisque neque sed sem egestas blandit. Nam nulla magna, malesuada vel, convallis in, cursus et, eros. Proin ultrices. Duis volutpat",
    createdAt: "2022-10-20 8:39 ",
  },
  {
    id: 2,
    user: "Donna Haney",
    tittle:
      "amet metus. Aliquam erat volutpat. Nulla facilisis. Suspendisse commodo tincidunt",
    contents:
      "nunc risus varius orci, in consequat enim diam vel arcu. Curabitur ut odio vel est tempor bibendum. Donec felis orci, adipiscing non, luctus sit amet, faucibus ut, nulla. Cras eu tellus eu augue porttitor interdum. Sed auctor odio a purus. Duis elementum, dui quis accumsan convallis, ante lectus convallis est, vitae sodales nisi magna sed dui. Fusce aliquam, enim nec tempus scelerisque, lorem ipsum sodales purus, in molestie",
    createdAt: "2023-03-07 1:54 ",
  },
  {
    id: 3,
    user: "Myra Porter",
    tittle:
      "vitae, posuere at, velit. Cras lorem lorem, luctus ut, pellentesque",
    contents:
      "molestie dapibus ligula. Aliquam erat volutpat. Nulla dignissim. Maecenas ornare egestas ligula. Nullam feugiat placerat velit. Quisque varius. Nam porttitor scelerisque neque. Nullam nisl. Maecenas malesuada fringilla est. Mauris eu turpis. Nulla aliquet. Proin velit. Sed malesuada augue ut lacus. Nulla tincidunt, neque vitae semper egestas, urna justo faucibus lectus, a sollicitudin orci sem eget massa. Suspendisse eleifend. Cras sed leo. Cras vehicula aliquet libero. Integer in magna. Phasellus dolor elit, pellentesque a, facilisis non, bibendum sed, est. Nunc laoreet lectus quis massa. Mauris vestibulum, neque sed dictum eleifend, nunc risus varius",
    createdAt: "2022-11-29 11:44 ",
  },
  {
    id: 4,
    user: "Genevieve Cooper",
    tittle: "nibh lacinia orci, consectetuer euismod est arcu ac orci. Ut",
    contents:
      "ac turpis egestas. Fusce aliquet magna a neque. Nullam ut nisi a odio semper cursus. Integer mollis. Integer tincidunt aliquam arcu. Aliquam ultrices iaculis odio. Nam interdum enim non nisi. Aenean eget metus. In nec orci. Donec nibh. Quisque nonummy ipsum non arcu. Vivamus sit amet risus. Donec egestas. Aliquam nec enim. Nunc ut erat. Sed nunc est, mollis non, cursus non, egestas a, dui. Cras pellentesque. Sed dictum. Proin eget odio. Aliquam vulputate ullamcorper magna. Sed eu eros. Nam consequat dolor vitae dolor. Donec fringilla. Donec feugiat metus sit amet ante. Vivamus",
    createdAt: "2023-03-04 3:50 ",
  },
  {
    id: 5,
    user: "Dominic Kidd",
    tittle: "a, arcu. Sed et libero. Proin mi. Aliquam gravida mauris",
    contents:
      "ornare egestas ligula. Nullam feugiat placerat velit. Quisque varius. Nam porttitor scelerisque neque. Nullam nisl. Maecenas malesuada fringilla est. Mauris eu turpis. Nulla aliquet. Proin velit. Sed malesuada augue ut lacus. Nulla tincidunt, neque vitae semper egestas, urna justo faucibus lectus, a sollicitudin orci sem eget massa. Suspendisse eleifend. Cras sed leo. Cras vehicula aliquet libero. Integer in magna. Phasellus dolor elit, pellentesque a, facilisis non, bibendum",
    createdAt: "2022-08-17 9:04 ",
  },
  {
    id: 6,
    user: "Yael Livingston",
    tittle: "amet diam eu dolor egestas rhoncus. Proin nisl sem, consequat",
    contents:
      "iaculis odio. Nam interdum enim non nisi. Aenean eget metus. In nec orci. Donec nibh. Quisque nonummy ipsum non arcu. Vivamus sit amet risus. Donec egestas. Aliquam nec enim. Nunc ut erat. Sed nunc est, mollis non, cursus non, egestas a, dui. Cras pellentesque. Sed dictum. Proin eget odio. Aliquam vulputate ullamcorper magna. Sed eu eros. Nam",
    date: "2023-05-30 6:46 AM",
  },
  {
    id: 7,
    user: "Tyrone Greene",
    tittle: "at pretium aliquet, metus urna convallis erat, eget tincidunt dui",
    contents:
      "risus. Quisque libero lacus, varius et, euismod et, commodo at, libero. Morbi accumsan laoreet ipsum. Curabitur consequat, lectus sit amet luctus vulputate, nisi sem semper erat, in consectetuer ipsum nunc id enim. Curabitur massa. Vestibulum accumsan neque et nunc. Quisque ornare tortor at risus. Nunc ac sem ut dolor dapibus gravida. Aliquam tincidunt, nunc ac mattis ornare, lectus ante dictum mi, ac mattis velit justo",
    date: "2023-04-12 4:16 PM",
  },
  {
    id: 8,
    user: "Holmes Browning",
    tittle:
      "vel pede blandit congue. In scelerisque scelerisque dui. Suspendisse ac",
    contents:
      "Suspendisse ac metus vitae velit egestas lacinia. Sed congue, elit sed consequat auctor, nunc nulla vulputate dui, nec tempus mauris erat eget ipsum. Suspendisse sagittis. Nullam vitae diam. Proin dolor. Nulla semper tellus id nunc interdum feugiat. Sed nec metus facilisis lorem tristique aliquet. Phasellus fermentum convallis ligula. Donec luctus aliquet odio. Etiam ligula tortor, dictum eu, placerat eget,",
    date: "2022-10-21 11:53 PM",
  },
  {
    id: 9,
    user: "Colin Keller",
    tittle:
      "Nulla dignissim. Maecenas ornare egestas ligula. Nullam feugiat placerat velit.",
    contents:
      "Suspendisse eleifend. Cras sed leo. Cras vehicula aliquet libero. Integer in magna. Phasellus dolor elit, pellentesque a, facilisis non, bibendum sed, est. Nunc laoreet lectus quis massa. Mauris vestibulum, neque sed dictum eleifend, nunc risus varius orci, in consequat enim diam vel arcu. Curabitur ut odio vel est tempor bibendum. Donec felis orci, adipiscing non, luctus sit amet, faucibus",
    date: "2022-12-27 9:39 AM",
  },
  {
    id: 10,
    user: "Christen Durham",
    tittle: "congue, elit sed consequat auctor, nunc nulla vulputate dui, nec",
    contents:
      "eu dolor egestas rhoncus. Proin nisl sem, consequat nec, mollis vitae, posuere at, velit. Cras lorem lorem, luctus ut, pellentesque eget, dictum placerat, augue. Sed molestie. Sed id risus quis diam luctus lobortis. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Mauris ut quam vel sapien imperdiet ornare. In faucibus. Morbi",
    date: "2022-10-06 3:20 AM",
  },
  {
    id: 11,
    user: "Rosalyn Rodriquez",
    tittle:
      "lobortis quam a felis ullamcorper viverra. Maecenas iaculis aliquet diam.",
    contents:
      "at, velit. Cras lorem lorem, luctus ut, pellentesque eget, dictum placerat, augue. Sed molestie. Sed id risus quis diam luctus lobortis. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Mauris ut quam vel sapien imperdiet ornare. In faucibus. Morbi vehicula. Pellentesque tincidunt tempus risus. Donec egestas. Duis ac arcu. Nunc mauris. Morbi non sapien molestie orci tincidunt adipiscing. Mauris molestie pharetra nibh. Aliquam ornare, libero at auctor ullamcorper, nisl arcu iaculis enim, sit amet ornare lectus justo eu arcu. Morbi sit amet",
    date: "2022-10-10 6:37 AM",
  },
  {
    id: 12,
    user: "Brian Skinner",
    tittle: "ornare. Fusce mollis. Duis sit amet diam eu dolor egestas",
    contents:
      "Sed pharetra, felis eget varius ultrices, mauris ipsum porta elit, a feugiat tellus lorem eu metus. In lorem. Donec elementum, lorem ut aliquam iaculis, lacus pede sagittis augue, eu tempor erat neque non quam. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Aliquam fringilla cursus purus. Nullam scelerisque neque sed sem egestas",
    date: "2022-11-07 4:21 AM",
  },
  {
    id: 13,
    user: "Jeremy Oneil",
    tittle:
      "nibh vulputate mauris sagittis placerat. Cras dictum ultricies ligula. Nullam",
    contents:
      "in consequat enim diam vel arcu. Curabitur ut odio vel est tempor bibendum. Donec felis orci, adipiscing non, luctus sit amet, faucibus ut, nulla. Cras eu tellus eu augue porttitor interdum. Sed auctor odio a purus. Duis elementum, dui quis accumsan convallis, ante lectus convallis est, vitae sodales nisi magna sed dui. Fusce aliquam, enim",
    date: "2023-04-24 10:53 PM",
  },
  {
    id: 14,
    user: "Nicholas Fulton",
    tittle:
      "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Etiam laoreet,",
    contents:
      "aliquet molestie tellus. Aenean egestas hendrerit neque. In ornare sagittis felis. Donec tempor, est ac mattis semper, dui lectus rutrum urna, nec luctus felis purus ac tellus. Suspendisse sed dolor. Fusce mi lorem, vehicula et, rutrum eu, ultrices sit amet, risus. Donec nibh enim, gravida sit amet, dapibus id, blandit at, nisi. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Proin vel nisl. Quisque fringilla",
    date: "2023-02-15 10:25 PM",
  },
  {
    id: 15,
    user: "Demetrius Ferguson",
    tittle: "lorem eu metus. In lorem. Donec elementum, lorem ut aliquam",
    contents:
      "lectus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec dignissim magna a tortor. Nunc commodo auctor velit. Aliquam nisl. Nulla eu neque pellentesque massa lobortis ultrices. Vivamus rhoncus. Donec est. Nunc ullamcorper, velit in aliquet lobortis, nisi nibh lacinia orci, consectetuer euismod est arcu ac orci. Ut semper pretium neque. Morbi quis urna. Nunc quis arcu vel quam dignissim pharetra. Nam ac nulla. In tincidunt congue turpis. In condimentum. Donec at arcu. Vestibulum",
    date: "2022-11-05 10:56 PM",
  },
];

// 게시판 만들기

app.listen(port, () => {
  console.log(port, "포트로 서버가 열렸습니다.");
});

// 게시글 조회
app.get("/posts", (req, res) => {
  res.send(posts);
});

// 게시글 1개 조회
app.get("/posts/:id", (req, res) => {
  const post = posts.find((post) => `${post.id}` === req.params.id);
  if (!post) res.status("404", "게시글을 찾을 수 없습니다.");
  res.send(post);
});

// 게시글 작성
app.post("/posts", (req, res) => {
  posts.push({
    id: posts[posts.length - 1].id + 1,
    user: req.body.user,
    tittle: req.body.tittle,
    content: req.body.content,
    date: new Date(),
  });
  res.send();
});

// 게시글 수정 //아직 put으로 진행 안 함
app.put("/posts", (req, res) => {
  const newposts = posts.map((post) => ({ ...post, user: post.user + "님" }));
  // 오브젝트의 리턴을 생략하는 경우 소괄호로 한 번 감싸서 오브젝트임을 알려 준다.
  res.send(newposts);
});

// 게시글 삭제 // 아직 안 함
app.delete("/posts", (req, res) => {
  res.send("아직 안 함");
});