Spring boot 60

(Flutter) 카메라 다루기 3 단계

import 'dart:convert';import 'dart:io';import 'package:image_picker/image_picker.dart';import 'package:http/http.dart' as http;import 'package:path/path.dart' as path;// 파일에 경로을 쉽게 다루게 하는 유틸리티 클래스class ImageHelper { // 서버 측 URL 설정 (개발 환경 IP 주소 관리) static const String _baseUrl = "http://192.168.0.132:8080"; static const String _uploadEndpoint = '/api/images'; // 카메라로 사진 촬영 static Future _tak..

Spring boot 2025.08.19

(Spring boot)스프링 부트 Base64 활용(스프링 , 플러터)

1. Base64란?Base64는 바이너리 데이터(이미지, 파일 등)를 텍스트로 변환하는 인코딩 방식입니다. 64개의 ASCII문자 (A-Z, a-z, 0-9, +, /)와 패딩 문자(=)를 사용해 안전하게 전송할 수 있게 합니다. 2. 왜 사용하나요?텍스트만 허용하는 시스템 (예: JSON, 이메일, HTTP)에서 바이너리 데이터를 보낼 때.데이터 손상 방지 : 특수 문자가 바이너리에 섞이지 않음.예 : 플러터 앱에서 파일을 Base64로 변환해 서버로 업로드.3. 어떻게 작동하나요?1. 바이너리 데이터를 8비트 바이트로 봅니다.2. 6비트 단위로 나눕니다. (3바이트 = 24비트= 4개의 6비트).3. 각 6비트를 0-63 숫자로 변환 후 , Base64 테이블에서 문자로 매핑4. 나머지 비트가 부..

Spring boot 2025.08.08

(JSW) JSON Web Token 이란 뭘까?

JWT란 무엇인가?JWT는 JSON Web Token의 약자로, 두 시스템 간에 정보를 안전하게 전송하기 위해 사용되는 토큰 기반 인증 방식입니다. 예를 들어 , 클라이언트와 서버 간에 인증 정보나 사용자 상태를 유지하고 싶을 때 JWT를 활용합니다. JWT는 JSON 형태로데이터를 저장하며, 그 데이터는 특정 형식으로 안전하게 교환됩니다. JWT 왕국 이야기어느 날, 왕국 입구에서 여행자가 문지기에게 말합니다. "안녕학세요! 왕국에 들어가고 싶어요!"문지기 : "신분증 좀 보여주세요. 확인 후 입장권을 드릴께요"여행자가 신분증을 보여주니 , 문지기는 특별한 JWT 입장권을 발급해줍니다. 특별한 입장권의 비밀(JWT 발급) - 이 입장권에는 3가지 정보가 적혀있어요.1.머리글 (헤더 ): " 이것은 JW..

Spring boot 2025.08.04

(Spring boot) validation 의존성 추가 및 사용해 보기

| 유효성 검사 라이브러리 추가implementation 'org.springframework.boot:spring-boot-starter-validation' 기존 방식 : 개발자가 직접 if문으로 유효성 검사 코드 작성validation 사용 : 어노테이션만으로 간단하게 유효성 검사 처리예시 코드public void validate() { if (username == null || username.trim().isEmpty()) { throw new IllegalArgumentException("사용자명을 입력해주세요"); } if (password == null || password.trim().isEmpty()) { throw new IllegalArgu..

Spring boot 2025.07.26

1. AOP(관점 지향 프로그래밍)란 뭘까?

1. AOP란 무엇일까?AOP는 Aspect-Oriented Programming 약자로, 소프트웨어 개발에서 공통적인 작업(예: 로그 남기기, 오류 체크 등)을 프로그램의 핵심 로직과 분리해서 관리하는 방법입니다 . 마치 요리할 때 메인 요리 (고기 굽기)와 별도로 양념 준비나 설거지 같은 부가 작업을 따로 처리하는 것과 비슷함 일반적인 프로그래밍(OOP): 모든 코드를 하나한 직접 써서 넣어야 함. 예를 들어, 모든 메서드에 로그를 남기려면 각 메서드에 log.debug("작업 시작");을 반복해서 넣어야 합니다. AOP 의 장점: 공통 작업을 한 곳에서 설정하면, 프로그램 전체에 자동으로 적용, 마치 마법처럼 모든 곳에 똑같은 도구를 붙이는 느낌임. AOP의 핵심 개념AOP는 몇 가지 중요한 단계를..

Spring boot 2025.07.23

6. RestAPI 컨트롤러 요청과 응답

주요 포인트(open in view: true)기본 값 # JPA 설정 jpa: open-in-view: false # 기본값 true hibernate: DTO를 서비스에서 만들어야 하는 이유1. 커넥션 시간 최적화 : 트랜잭션 종료 전에 필요한 데이터만 추출2. 불필요한 필드 제거 : 화면에 필요한 데이터만 응답3. Lazy Loading 문제 해결 : MessageConverter에서 JSON 생성 시 오류 발생 응답DTO 서비스에서 안만들면 문제는?1. 커넥션의 시간이 길어진다.2. 필요 없는 필드를 응답하게 된다.3.MessageConverter에서 json 만들 떼, 빈 객체를 Lazy loading하고 기다렸다가 json을 만들어야 는데 안기다리고 만들다가 오류가 난다. 요청..

Spring boot 2025.07.23

5. 공통 응답 DTO 만들어 주기

ApiUtil 만들기더보기더보기package com.tenco.blog._core.common;import lombok.Data;/** * REST API 공통 응답 형식을 위한 클래스 설계 * 모든 API 응답을 통일된 형태로 관리하기 위해 설계 * { * "status" : 200, * "msg" : "성공", * "body" : { 실제 데이터 } * } */@Datapublic class ApiUtil { private Integer status; // HTTP 상태 코드 private String msg; // 응답 메세지 private T body; // 실제 응답 데이터 (제네릭 사용) /** * 성공 응답 생성자 */..

Spring boot 2025.07.23

3. 뷰 연결 컨트롤러 정리 and 4. 인터셉터 설정 변경 및 REST API 주소 설계 확인

3 ======================================================================================= WebMvcConfig - 코드 수정 package com.tenco.blog._core.config;import com.tenco.blog._core.interceptor.LoginInterceptor;import lombok.RequiredArgsConstructor;import org.springframework.context.annotation.Configuration;import org.springframework.web.servlet.config.annotation.CorsRegistry;import org.springframework..

Spring boot 2025.07.23

2. RestAPI 주소 설계 규칙

소문자를 사용한다.대문자는 때로 문제를 일으키는 경우가 있기 때문에 URI를 작성할 때는 소문자를 선호한다.❌http://dev-cool.tistory.com/users/Post-Comments ⭕http://cocoon1787.tistory.com/users/post-comments언더바(_) 대신 하이픈(-)을 사용한다.가독성을 위해 긴 Path를 표현하는 단어는 하이픈(-)으로 구분하는 것이 좋다.프로그램의 글자 폰트에 따라 언더바 문자는 부분적으로 가려지거나 숨겨질수 있다.❌http://dev-cool.tistory.com/users/post_comments ⭕http://dev-cool.tistory.com/users/post-comments마지막에 슬래시(/)를 포함하지 않는다.후행 슬래시(/..

Spring boot 2025.07.21
728x90