본문 바로가기

verdantjuly/Today I Learned

TIL 20231204

728x90

이번 주 목표

everycoach react

resmemory test server

오늘 목표

everycoach login 페이지

resmemory test server 조사

오늘 한 것

everycoach login 페이지

resmemory 모킹 서버 올리고 테스트 코드 구축

resmemory 로그 저장소 엘라스틱 서치로 이동

resmemory 게시글 수정 시 썸네일 수정

1. 리액트 페이지 이동

문제

리액트에서 페이지 이동을 어떻게 하는지 잘 모르겠다.

시도

html과 Dom을 2개씩 만든다. > 실패

해결

Router와 Navigate를 이용한다.

 

App.jsx

import { BrowserRouter as Router, Routes, Route } from "react-router-dom";

import "./App.css";

import HomePage from "./pages/HomePage.jsx";
import LoginPage from "./pages/LoginPage.jsx";

function App() {
  return (
    <div>
      <Router>
        <Routes>
          <Route path="/" element={<HomePage />} />
          <Route path="/login" element={<LoginPage />} />
        </Routes>
      </Router>
    </div>
  );
}

export default App;

 

Nav.jsx

import React from "react";
import { useNavigate } from "react-router-dom";

import "./Nav.css";

function Nav() {
  const navigate = useNavigate();

  function clickLogin() {
    navigate("/login");
  }
  return (
    <div>
      <nav>
        <p id="logo">everycoach</p>
        <div className="navButtons">
          <button id="loginBtn" onClick={clickLogin}>
            로그인
          </button>
          <button id="signupBtn" onClick={clickLogin}>
            무료 회원 가입ㅤ➔{" "}
          </button>
        </div>
      </nav>
    </div>
  );
}
export default Nav;

 

알게된 것

 

리액트에서 페이지 이동을 할 때는 Router> Routes > Route 와 Navigate를 이용한다.

 

2. 로그인 페이지 및 반응형 완성

 

3. 모킹서버

1. __test__/intergration에 실행될 모킹 서버 모듈을 넣는다.

2. dataconnection method 실행 시 모킹 서버의 포트번호를 넣는다.

3. db는 테스트별로 초기화되므로 필요한 정보는 미리 넣는다. (userId)

 

4. 로그 저장소 elastic search

 

import winston from 'winston';
import mailSender from './mail';
import dotenv from 'dotenv';
import winstonElasticsearch from 'winston-elasticsearch';

dotenv.config();

const { combine, timestamp, printf } = winston.format;

let log;

const logFormat = printf((info) => {
  log = `${info.timestamp} ${info.level}: ${info.message}`;

  const slackParam = {
    toEmail: '이메일 주소',
    subject: '[응답하라 추억시대] 서버가 종료되었습니다.',
    text: log,
  };
  const emailParam = {
    toEmail: process.env.NODEMAILER_EMAIL,
    subject: '[응답하라 추억시대] 서버가 종료되었습니다.',
    text: log,
  };

  mailSender.sendGmail(slackParam);
  mailSender.sendGmail(emailParam);
  return log;
});

const esTransportOpts = {
  level: 'error',
  index: 'error',
  indexPrefix: 'logging-api',
  indexSuffixPattern: 'YYYY-MM-DD',
  clientOpts: {
    node: process.env.ES_ADDON_URI,
    maxRetries: 5,
    requestTimeout: 10000,
    sniffOnStart: false,
    auth: {
      username: process.env.ES_ADDON_USER,
      password: process.env.ES_ADDON_PASSWORD,
    },
  },
  source: process.env.LOG_SOURCE || 'api',
};

// 엘라스틱 서치 연결
const esTransport = new winstonElasticsearch.ElasticsearchTransport(esTransportOpts);

const logger = winston.createLogger({
  format: combine(timestamp({ format: 'YYYY-MM-DD HH:mm:ss' }), logFormat),
  transports: [
    new winston.transports.Console({
      level: 'error',
      json: true,
    }),
    esTransport,
  ],
});

export default logger;

 

- 엘라스틱 서치 REST API 데이터 조회

1. 데이터 저장시 index를 표기한다.

2. 엔드포인트/index/_search로 GET 요청.

이때, Authorization : Basic base64로_인코딩한_비밀번호(username:password 형식)


정리 

리액트에서 페이지 이동을 할 때는 Router> Routes > Route 와 Navigate를 이용한다.

 

모킹서버

1. __test__/intergration에 실행될 모킹 서버 모듈을 넣는다.

2. dataconnection method 실행 시 모킹 서버의 포트번호를 넣는다.

3. db는 테스트별로 초기화되므로 필요한 정보는 미리 넣는다. (userId)

 

- 엘라스틱 서치 REST API 데이터 조회

1. 데이터 저장시 index를 표기한다.

2. 엔드포인트/index/_search로 GET 요청.

이때, Authorization : Basic base64로_인코딩한_비밀번호(username:password 형식)

 

KPT

Keep

열심히 하려고 하는 것 

Problem

백엔드적인 고민을 하지 않고 회피하는 것

Try

어렵더라도 백엔드도 열심히 하기

소감

열심히 했다. 오늘에 만족한다. 

 

 

 

 

 

'verdantjuly > Today I Learned' 카테고리의 다른 글

TIL 20231222  (0) 2023.12.22
TIL 20231221  (2) 2023.12.22
TIL 20231203  (0) 2023.12.03
TIL 20231125  (2) 2023.11.25
TIL 20231106  (0) 2023.11.06