에러 메세지 회원가입 로직을 테스트하는 중에 해당 문제가 발생했습니다. 클라이언트에서 POST 방식으로 요청을 보낼 수 있는 API를 만들어서 전달했는데, 요청 시 아래와 같은 Exception이 발생하는 이슈입니다. Resolved [org.springframework.web.HttpMediaTypeNotSupportedException: Content-Type 'application/x-www-form-urlencoded;charset=UTF-8' is not supported] 원인 해당 코드에서는 객체를 JSON 형식으로 전송하려고 시도하고 있는 반면, 요청의 콘텐츠 타입이 'application/x-www-form-urlencoded'로 설정되어 있는 것이 원인입니다. RestAPI의 경우 보통..
1️⃣ 덧칠하기 문제 설명 어느 학교에 페인트가 칠해진 길이가 n미터인 벽이 있습니다. 벽에 동아리 · 학회 홍보나 회사 채용 공고 포스터 등을 게시하기 위해 테이프로 붙였다가 철거할 때 떼는 일이 많고 그 과정에서 페인트가 벗겨지곤 합니다. 페인트가 벗겨진 벽이 보기 흉해져 학교는 벽에 페인트를 덧칠하기로 했습니다. 넓은 벽 전체에 페인트를 새로 칠하는 대신, 구역을 나누어 일부만 페인트를 새로 칠 함으로써 예산을 아끼려 합니다. 이를 위해 벽을 1미터 길이의 구역 n개로 나누고, 각 구역에 왼쪽부터 순서대로 1번부터 n번까지 번호를 붙였습니다. 그리고 페인트를 다시 칠해야 할 구역들을 정했습니다. 벽에 페인트를 칠하는 롤러의 길이는 m미터이고, 롤러로 벽에 페인트를 한 번 칠하는 규칙은 다음과 같습니..
ERD 최종_진짜최종_진짜진짜최종.jpg 같은 느낌.... 이렇게 간단한 ERD를 5번이나 수정하고 있습니다..! 오늘은 도대체 어떤 문제 때문에 ERD를 또 수정했는지 기록해보도록 할게요. 1️⃣ 문제 스프링부트에 MySQL을 연결해 회원가입 기능을 테스트 하던 도중 다음과 같은 에러가 발생했습니다. 2️⃣ 오류메세지 java.sql.SQLSyntaxErrorException: Unknown column 'ue1_0.user_id' in 'where clause' DB에 컬럼이 없어서 SQL 명령어 실행이 실패 했다는 내용입니다. 3️⃣ 원인 아무리 DB를 보고 Entity를 봐도 분명 해당 컬럼들이 다 작성되어 있는데 도대체 왜 컬럼이 없다는 거지? 하고 한참을 헤매었습니다. 원인은 간단했는데요! 바..
1️⃣ 과일 장수 문제 설명 과일 장수가 사과 상자를 포장하고 있습니다. 사과는 상태에 따라 1점부터 k점까지의 점수로 분류하며, k점이 최상품의 사과이고 1점이 최하품의 사과입니다. 사과 한 상자의 가격은 다음과 같이 결정됩니다. 한 상자에 사과를 m개씩 담아 포장합니다. 상자에 담긴 사과 중 가장 낮은 점수가 p (1 ≤ p ≤ k)점인 경우, 사과 한 상자의 가격은 p * m 입니다. 과일 장수가 가능한 많은 사과를 팔았을 때, 얻을 수 있는 최대 이익을 계산하고자 합니다.(사과는 상자 단위로만 판매하며, 남는 사과는 버립니다) 예를 들어, k = 3, m = 4, 사과 7개의 점수가 [1, 2, 3, 1, 2, 3, 1]이라면, 다음과 같이 [2, 3, 2, 3]으로 구성된 사과 상자 1개를 만들..
API 서비스 (아이디 중복 확인 구현) 개발 후 테스트를 진행하던 중에 계속해서 403 오류가 났습니다. 이에 대한 해결 과정을 잊어버리기 전에 기록해봅니다. ⭕ build.gradle에서 Springboot version 3.2.1로 업그레이드 3.2.0의 고질적인 문제라고 하여 아래의 두 가지를 수정해주었습니다. build.gradle 파일에서 Springboot 버전 3.2.1 로 업그레이드 plugins { id 'java' // java 프로젝트로 설정 id 'org.springframework.boot' version '3.2.1' // 3.2.1 버전의 스프링 부트로 설정 id 'io.spring.dependency-management' version '1.1.4' // 스프링 부트의 의존..
Register.js 전체 코드 더보기 import React from "react"; import '../css/Register.css'; import Nav from "../components/Nav"; import { useState } from "react"; import axios from "axios"; let Register = () => { let [user,setUser] = useState({ userId : "", password : "", name : "", birth : "", email : "", phone : "", addr1 : "", addr2 : "" }); let dupIdCheck = () => { axios.post('http://localhost:8082/api/v..
오늘은 React로 로그인 UI 구현한 것을 기록하겠습니다. 회원가입 폼 대로 비슷하게 구현한 단순 UI이기 때문에 특별한 건 없네요..! 로그인 Login.js 컴포넌트 생성 pages 폴더 아래에 Login.js 컴포넌트 생성 css 폴더 아래에 Login.css 생성 import해주기 import React from "react"; import '../css/Login.css'; import Nav from "../components/Nav"; 로그인 폼 & 아이디, 비밀번호 입력할 input창 생성 class Login extends React.Component { render() { return ( 로그인 Login ) } } export default Login; 흔한 로그인 ui 이기 때문에..
시큐리티 공부+적용과 동시에 리액트로 각 페이지들 UI를 구현하려고 합니다. 회원관리 페이지들부터 구현해보겠습니다! 회원가입 Register.js 컴포넌트 생성 pages 폴더 아래에 Register.js 컴포넌트 생성 css 폴더 아래에 Register.css 생성 💻 Register.js 초기 코드 import React from "react"; import '../css/Register.css'; class Register extends React.Component { render() { return ( Register ) } } export default Register; 💻 Register.js 폼 작성 Register.js import React from "react"; import '../c..
1️⃣ 추억 점수 문제 설명 사진들을 보며 추억에 젖어 있던 루는 사진별로 추억 점수를 매길려고 합니다. 사진 속에 나오는 인물의 그리움 점수를 모두 합산한 값이 해당 사진의 추억 점수가 됩니다. 예를 들어 사진 속 인물의 이름이 ["may", "kein", "kain"]이고 각 인물의 그리움 점수가 [5점, 10점, 1점]일 때 해당 사진의 추억 점수는 16(5 + 10 + 1)점이 됩니다. 다른 사진 속 인물의 이름이 ["kali", "mari", "don", "tony"]이고 ["kali", "mari", "don"]의 그리움 점수가 각각 [11점, 1점, 55점]]이고, "tony"는 그리움 점수가 없을 때, 이 사진의 추억 점수는 3명의 그리움 점수를 합한 67(11 + 1 + 55)점입니다. ..
1️⃣ API 명세서란? 백엔드 개발자가 설계한 API의 호출과 응답 관련 정보를 정리해 프론트 개발자에게 전달하는 문서입니다. 해당 문서를 바탕으로 프론트 개발자는 API의 사용 방법을 파악하고, 호출과 응답을 테스트하며, 서비스를 구현합니다. 2️⃣ API 명세서를 쓰는 이유? 백엔드는 API 문서가 있어야 기능을 정의하고 작업할 수 있고, 프론트엔드는 이를 바탕으로 백엔드에서 어떤 값이 올 지 알고 작업할 수 있습니다. 한 마디로 표준화된 API 명세서는 개발자 간의 협업을 촉진하고, 외부 개발자가 소프트웨어를 쉽게 이해하고 활용할 수 있게 합니다. 3️⃣ API 명세서 작성 도구 OpenAPI (Swagger), Postman, GitBook 등이 있습니다. 이러한 도구들은 가독성 높은 형식으로 ..