2025년 8월 5일 화요일(50일차)

Jeonghoon·2025년 8월 5일

jeonghoon's Study

목록 보기
52/128

🌐 Fetch · Spring · 프로젝트 설계 정리


⚙️ [ Fetch ]

Fetch는 JS에서 제공하는 비동기 통신 함수로, 서버와 데이터를 주고받을 때 사용된다.

🧠 특징

  • 함수 선언은 람다식으로 작성한다.
  • 데이터 전송 시 JSON 형식을 주로 사용한다.

🧾 Fetch 함수 선언 순서

단계설명코드 예시
1️⃣ 보낼 데이터 준비전송할 데이터를 객체 형태로 선언let data = { "bno": 1, "bcontent": "테스트" };
2️⃣ fetch 옵션 구성HTTP 메소드, 헤더, 본문(body) 설정let option =method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(data) }
3️⃣ fetch 실행서버 통신 요청 및 응답 처리fetch(URL, option) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

💡 핵심 포인트

항목설명
🚀 method"GET", "POST", "PUT", "DELETE" 등 사용
🧱 headers"Content-Type": "application/json" 설정 필수
📦 bodyJSON.stringify(data)로 객체를 문자열로 변환
⚙️ then()응답을 JSON으로 변환 후 처리
⚠️ catch()통신 실패 시 예외 처리

☕ [ Spring ]

Spring에서의 컨트롤러 구조 및 데이터 처리 방식 정리

어노테이션설명
🧩 @RestController@Component(싱글톤 역할) + @Controller + @ResponseBody의 조합
📦 @RequestBody클라이언트가 보낸 데이터를 Dto 객체로 한 번에 매핑 가능 (매개변수 개별 선언 불필요)

💻 예시 코드

@RestController
public class BoardController {

    @PostMapping("/board/write")
    public String write(@RequestBody BoardDto dto) {
        System.out.println(dto);
        return "게시글 등록 완료";
    }
}
const writeBoard = async () => {
    const data = { bno: 1, bcontent: "테스트" };
    const option = {
        method: "POST",
        headers: { "Content-Type": "application/json" },
        body: JSON.stringify(data)
    };
    const response = await fetch("/board/write", option);
    const result = await response.text();
    console.log(result);
}

💡 정리:

  • @RequestBody를 사용하면 JS → Spring 간 객체 전달이 단순화
  • DTO 기반으로 데이터를 한 번에 처리할 수 있어 유지보수 용이

🚀 [ 프로젝트 설계 및 개선 방향 ]

권장 방향설명
🧮 메소드 수보다 질기능 양보다 API 활용 / 문법 이해에 집중
🧠 문법 중심 개발상속, 인터페이스, 제네릭 등을 활용해 확장성 있는 코드 작성
💡 아이디어 중심CRUD 중심이 아닌 창의적 기능 구현 시도
🧩 자동화 지향반복적인 코드는 자동화 / 모듈화로 단축
🎯 기본기 강화기능 구현 외에도 문법 응용 및 코드 구조 개선 연습

0개의 댓글