| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 |
- Bambino
- 웹개발자
- servlet
- Doit알고리즘코딩테스트
- react
- REDIS
- 자바
- MVC
- MVC패턴
- 웹개발
- job
- BCIT
- SpringFramework
- 웹개발기초
- mysql
- jsp
- Programming
- sql
- MSA
- DB
- 데이터베이스
- 밤비노
- Java
- coding test
- html
- CSS
- spring boot
- Spring MVC
- vite
- two pointers
- Today
- Total
목록Backend (55)
초보 개발자의 기록
백엔드 개발에서 API를 만든다는 건 단순히 "요청을 받는다"로 끝나지 않음API를 어떻게 테스트하느냐가 서비스의 안정성과 품질을 좌우함 이번 글에서는 API 테스트의 기본 개념과 함께, 개발자들이 자주 사용하는 테스트 도구들, 그리고 Swagger의 역할에 대해 정리 API 테스트란?API (Application Programming Interface)는 서버와 클라이언트가 데이터를 주고받는 통로API 테스트는 이 통로가 정상적으로 작동하는지, 즉 요청(Request)을 보냈을 때 기대한 응답(Response)이 제대로 오는지를 확인하는 과정 예를 들어,- /users 로 GET요청을 보냈을 때 사용자 목록이 잘 오는지- POST 요청 시 Body에 담은 데이터가 실제로 저장되는지 - 인증 토큰이 없느..
DTO의 정의DTO(Data Transfer Object)는 데이터 전송을 위해 사용하는 객체를 의미데이터를 주고받기 위해 만든 작은 상자라고 생각하면 서버와 클라이언트 사이에서 데이터를 전송할때 사용주로 클라이언트와 서버 간 데이터 전송 또는 서버 내부 계층 간 데이터 이동에 사용DTO를 사용하면 Entity를 직접 노출하지 않고 안전하게 데이터를 전달할 수 있음예를 들어, 클라이언트가 메모 작성 데이터를 서버로 보내거나 서버가 메모 리스트를 반환할 때 DTO를 활용 DTO가 필요한 이유계층 분리데이터베이스 Entity를 직접 노출하면 계층 간 결합도가 높아지고, 유지보수가 어려워짐DTO를 사용하면 프론트엔드와 백엔드 사이에 데이터 전송 전용 객체를 만들 수 있음데이터 안전성 확보Entity 내부의 ..
웹 개발에서 가장 중요한 개념 중 하나는 클라이언트가 보낸 데이터를 서버에서 어떻게 받는가임Spring MVC에서 다양한 방식으로 요청 데이터를 다룰 수 있고, 이를 Java 객테로 바꿔주는 편리한 기능을 제공함대표적 방법: @ReuqestParam @ModelAttribute @RequestBody를 비교하고, 실제 상황에서 어떤 방식을 선택해야 하는지 정리 @RequestParam - 단일 값 처리@RequestParam은 쿼리 스트링이나 폼 데이터에서 단일 파라미터를 직접 받아옴@GetMapping("/form/param")@ResponseBodypublic String helloGetRequestParam(@RequestParam(required = false) String name, ..
웹 개발을 하다 보면 클라이언트(브라우저)에서 서버로 데이터를 전달해야 할 일이 자주 발생예를 들어 사용자의 이름과 나이를 입력받아 서버에서 처리하고 싶을 때, 데이터를 전달하는 방법은 여러 가지가 있음Spring에서는 대표적으로 Path Variable과 Request Param을 통해 데이터를 받을 수 있음 Path VariablePath Variable은 URL 경로 자체에 데이터를 포함시키는 방식예를 들어 사용자의 이름과 나이를 URL에 직접 넣어 요청할 수 있음GET http://localhost:8080/hello/request/star/Robbie/age/95위 요청에서 Robbie와 95는 서버로 전달되는 데이터. Spring에서는 @PathVariable 애너테이션을 사용하여 해당 값을..
백엔드 개발을 하다 보면 데이터를 주고받을 때 가장 많이 사용하는 형식이 바로 JSON그런데 Java 객체는 그대로는 JSON으로 변환할 수 없고, 또 JSON 문자열을 객체로 다시 바꾸는 과정도 필요이 과정을 도와주는 라이브러리가 바로 Jackson JacksonJackson은 Java 객체(Object) ↔ JSON 문자열 변환을 자동으로 처리해주는 라이브러리Spring 3.0 이후부터는 기본적으로 Spring 프레임워크에서 Jackson을 지원하기 때문에, 직접 변환 로직을 일일이 작성하지 않아도 됨Spring Boot의 spring-boot-starter-web 안에 이미 포함되어 있어서, 별도의 설정 없이 바로 사용할 수 있음즉, 우리가 @RestController에서 객체를 반환하면 Sprin..
웹 서버의 역할은 단순히 HTML, CSS, JS같은 파일을 반환하는 것이 주 업무인가? X과거에는 맞는 말이었음. 서버가 곧 화면(View)을 만들어서 브라우저로 보내주는게 일반적인 흐름 최근 웹 생태계는 프론트엔드와 백엔드의 역할이 분리되면서, 서버가 직접 완성된 화면을 만들어주는 대신 데이터만 반환하는 방식이 더 선호되고 있음. 특히, 서버와 클라이언트 간에 데이터를 주고받는 표준 포맷으로 JSON이 널리 사용됨 서버가 데이터를 반환하는 방식의 변화과거: 서버가 JSP나 Thymleaf 같은 템플릿 엔진을 사용해 HTML을 만들어 클라이언트에 전달현재: 서버는 필요한 데이터(JSON)만 반환하고, 클라이언트(React, Vue, Angular 등)가 그 데이터를 사용해 화면을 그림-> 이렿게 역할이..
Spring Boot로 웹 개발을 시작하면 화면(View)을 어떻게 만들지 고민하게 됨대표적으로 사용되는 기술이 JSP(Java Server Pages)와 Thymleaf인데, 두 가지는 모두 서버에서 동적으로 HTNML을 만들어 보라우저에 전달하는 템플릿 엔진이지만, 철학과 사용 방식에는 큰 차이가 존재함 JSP(Java Server Pages)오래전부터 사용된 서블릿 기반 뷰 기술HTML 코드 안에 자바 코드를 직접 삽입할 수 있는 구조였기 때문에 () 개발 초기에 빠르게 화면을 만들수 있음하지만 코드와 디자인이 섞여 유지보수가 어렵고, 협업에도 불편함이 많음JSTML 같은 태그 라이브러리를 추가해 좀 더 깔끔하게 쓸 수 있지만, 여전히 브라우저에서 HTML파일만 열어보면 깨져 보이는한계가 존재. (..
웹 애플리케이션을 개발하다 보면 우리가 보는 페이지가 정적인지, 동적인지 구분할 필요가 있음정적 페이지: 그대로 보여주는 HTML (항상 같은 내용)동적 페이지: 요청이나 상황에 따라 내용이 바뀌는 HTML (사용자 마다 다름)Spring Boot에서는 이 두가지를 모두 다를 수 있는데, 방법이 조금 다름.정적 페이지(Static Page)정적 페이지는 사용자가 요청할 때마다 내용이 변하지 않고 그대로 보여지는 HTML 페이지Spring Boot에서는 기본적으로 resources/static 폴더가 제공됨. 이 안에 HTML 파일을 넣으면ㅇ 바로 브라우저에서 접근이 가능http://localhost:8080/hello.html로 접속하면 브라우저에 이 페이지가 그대로 뜸즉, 컨트롤러를 거치지 않고 바로 ..
웹 애플리케이션을 개발하다 보면 Controller라는 개념을 자주 접하게 된다Spring MVC를 이해하려면 먼저 Controller가 왜 필요한지, 기존 Servlet 방식과 어떻게 다른지 이해하는 것이 중요하다 Controller의 필요성기존 Servlet 방식에서는 API 하나마다 클래스와 메서드를 만들어야 했음예를 들어 회원 관리 API가 있다고 하면/user/login -> UserLoginServlet/user/logout -> UserLogoutServlet/user/signup -> UserSignUpServlet (Get, Post)총 4개의 API를 처리하기 위해 3개 이상의 클래스를 만들어야 해서 작은 프로젝트도 코드가 금방 복자뱋지고 유지보수가 어려움 Spring MVC Contr..