서버에서 api 받아오는 작업을 일단 하겠습니다.
사실 아직 초반 작업이라 아주 간단하게 해결이 가능합니다.
/server/Router/api.js 에서 bookReports 배열 객체를 만든뒤 dummy 데이터들을 집어넣은뒤 res.send로 날려주면 됩니다.
/server/Router/api.js
const express = require("express");
const router = express.Router();
const bookReports = [];
router.get("/rest/book", (req, res) => {
res.send({ api: bookReports });
});
module.exports = router;
이렇게 코드를 짠뒤
const bookReports = [
{
"postId": 1,
"id": 1,
"name": "id labore ex et quam laborum",
"email": "Eliseo@gardner.biz",
"body": "laudantium enim quasi est quidem magnam voluptate ipsam eos\ntempora quo necessitatibus\ndolor quam autem quasi\nreiciendis et nam sapiente accusantium"
},
{
"postId": 1,
"id": 2,
"name": "quo vero reiciendis velit similique earum",
"email": "Jayne_Kuhic@sydney.com",
"body": "est natus enim nihil est dolore omnis voluptatem numquam\net omnis occaecati quod ullam at\nvoluptatem error expedita pariatur\nnihil sint nostrum voluptatem reiciendis et"
},
{
"postId": 1,
"id": 3,
"name": "odio adipisci rerum aut animi",
"email": "Nikita@garfield.biz",
"body": "quia molestiae reprehenderit quasi aspernatur\naut expedita occaecati aliquam eveniet laudantium\nomnis quibusdam delectus saepe quia accusamus maiores nam est\ncum et ducimus et vero voluptates excepturi deleniti ratione"
},
...
{
"postId": 4,
"id": 19,
"name": "sed impedit rerum quia et et inventore unde officiis",
"email": "Madelynn.Gorczany@darion.biz",
"body": "doloribus est illo sed minima aperiam\nut dignissimos accusantium tempore atque et aut molestiae\nmagni ut accusamus voluptatem quos ut voluptates\nquisquam porro sed architecto ut"
},
{
"postId": 4,
"id": 20,
"name": "molestias expedita iste aliquid voluptates",
"email": "Mariana_Orn@preston.org",
"body": "qui harum consequatur fugiat\net eligendi perferendis at molestiae commodi ducimus\ndoloremque asperiores numquam qui\nut sit dignissimos reprehenderit tempore"
},
]
bookReports 데이터에 이렇게 넣어줍니다.
저는 총 20개의 데이터를 넣었고
https://jsonplaceholder.typicode.com/
JSONPlaceholder - Free Fake REST API
{JSON} Placeholder Free fake API for testing and prototyping. Powered by JSON Server + LowDB. Tested with XV. As of Oct 2021, serving ~1.7 billion requests each month.
jsonplaceholder.typicode.com
이 사이트를 통하여 데이터를 받아서 조금 추출하여 제 express 서버에서 dummy 데이터로 쓰고 있습니다.
그리고 postman 또는 브라우저 주소창에 'http://localhost:5000/api/rest/book' 이러한 url을 넣게되면
엉청난 양의 json 데이터 들이 나온다면 정상적으로 된것입니다.
이제 react에서 받아오는 코드를 짜보겠습니다.
/client/src/App.js
import axios from "axios";
import React, {useEffect, useState, useRef} from "react";
function App() {
const [data, setData] = useState([]);
const callApi = async () => {
const getData = await axios.get("/api/rest/book").then((res) => res.data.api);
console.log(getData);
};
useEffect(() => {
callApi();
}, []);
return (
<div className="reports-container">
</div>
);
}
export default App;
axios를 이용하여 /api/rest/book 이라는 url 을 넣고 get 요청을 합니다.
async await 함수를 이용하여 getData에 데이터가 담겼을때 console.log에 찍어주는 코드 입니다.
console 을 확인해보면 20개의 배열 객체가 나오는것을 볼수 있습니다.
이제 이것을 이용해 가공을 할것입니다.
가공은 Array.prototype.map() 함수를 이용할것이구요
const [data, setData] = useState([]);
const dataID = useRef();
const callApi = async () => {
const getData = await axios.get("/api/rest/book").then((res) => res.data.api);
const initData = getData.map((item) => {
return {
author: item.email,
comment: item.body,
create_date: new Date().getTime(),
id: dataID.current++
}
});
console.log(initData)
};
다음과 같이 코드를 짤수있습니다.
그리고 나서 initData를 console에서 확인해본다면 우리가 원하는 대로 데이터가 가공되어 나오는것을 확인할 수 있습니다.
다음 블로그 포스트는 Component 구조와 대략적인 틀을 짜보도록 하겠습니다.
'Project' 카테고리의 다른 글
[ Cigarette App ] 담배 어플리케이션?? 그게 무엇인가요? (0) | 2022.06.15 |
---|---|
[ 1 day 3 pill ] 프로젝트 일정서, 간트 차트 (0) | 2022.04.20 |
[ 1 day 3 pill ] 프로젝트 계획서 (0) | 2022.04.20 |
[ 1 day 3 pill ] 기획 (0) | 2022.04.02 |
[ React & Node ] Book-Reports-App - 1. Setting (0) | 2022.03.24 |