2025/03/30 5

(6) Swagger 어노테이션 정리

@TagAPI 그룹 지정. Tag에 설정된 name이 같은 것끼리 하나의 API 그룹으로 묶는다. Controller 또는 Controller의 메서드 영역에 설정한다. REST API의 엔드포인트는 컨트롤러에 있으므로, 컨트롤러 클래스 위에 @Tag어노테이션을 붙여서 API 그룹을 설정할 수 있다. Target - ANNOTATION_TYPE, METHOD, TYPEname : 태그 이름description : 태그 설명@Tag(name="User", description="사용자 API")@RestController@RequestMapping("/users")public class UserApiController { //Post, Get, Patch, ... 에 해당하는 메서드들} @Operat..

프로젝트 2025.03.30

(5)-2 SPA, MPA

Swagger을 설치하다가 내 애플리케이션이 single-page application(SPA)이면 swagger-ui를 쓰고, 그게 아니면 swagger-ui-dist를 쓰라는 말이 있길래, SPA를 찾아보다가 서블릿까지 와버렸다!MPA (Multi Page Application)SPA가 한 개의 페이지로 구성된 애플리케이션이라면 MPA는 그 반대! 여러 페이지로 구성된 애플리케이션이다. 그러니까 그게 무슨 말이나면. 클라이언트가 페이지를 접속할 때마다 HTTP Request로 서버에게 페이지 접속 요청을 보낸다는 사실은 이미 다 알 것이다. 예전에는 클라이언트의 요청이 있을 때마다 서버에서 페이지를 매번 새로 보내줬었다. 예를 들어 동적 요청이 있다면 서버는 요청에 맞게 데이터베이스에서 데이터를 꺼..

프로젝트 2025.03.30

(5)-1 Spring Boot3에서 Swagger 사용하기 : Swagger 설치, Swagger Config 설정

API 문서를 작성해보자. 나는 HTTP 프로토콜을 사용하는 REST API를 사용할 것이기 때문에 먼저 HTTP 프로토콜의 주요 개념과 REST API가 어떻게 동작하는지 먼저 간단히 정리하고 Swagger 설치하는 법을 알아보도록 하겠다. REST APIREST API 설계 원칙REST는 HTTP 기반으로 클라이언트가 서버의 리소스에 접근하는 방식을 규정한 아키텍처이다. REST한 방식으로 API를 설계하려면 원칙이 있다. 자원(URI), 행위(HTTP request method), 표현(payload)를 사용하기URI는 리소스를 표현리소스에 대한 행위는 HTTP request method로 표현. URI로 표헌하지 않기이런 이론적인 얘기를 먼저 하면 당연히 안 와닿을테니 예시를 보자. 회원 관리 시..

프로젝트 2025.03.30

[백준/Python] 5639번 : 이진 검색 트리

문제https://www.acmicpc.net/problem/5639이진 검색 트리를 전위 순회한 결과를 보고 후위 순회한 결과를 구하는 문제이다.풀이파이썬 EOF 입력 처리?eof (end of file) : 파일 입출력 시 끝날 때까지 읽어들이는 readline()과 같은 내장 함수를 쓸 때 사용되는 개념sys.stdin.readline()함수는 eof를 만났을 때 except가 아니라 빈 문자열("")을 반환함파이썬 내장 함수 input()은 eof를 만났을 때 except를 반환함입력값에 입력 종결 규칙이 없을 때, 아무 것도 입력하지 않은 경우 빠져나와야 하므로 readline()은 빈 문자열이 들어올 때, input()은 except가 발생했을 때 break 처리를 해주면 됨while True..

정글/알고리즘 2025.03.30

[백준/Python] 1197번 : 최소 스패닝 트리

문제https://www.acmicpc.net/problem/1197풀이크루스칼 알고리즘을 사용해 최소 스패닝 트리를 만들었다. 시간 초과 원인?가중치가 가장 큰 간선에서 비로소 스패닝 트리가 만들어질 수도 있으므로, 어차피 최악의 경우에는 모든 간선을 확인해야 함시간 초과의 근본적인 원인은 union-find에 어떤 최적화도 적용되어 있지 않아 높이가 아주 높은 트리가 만들어질 수 있기 때문 해결 방법union 함수에서 parent 합치기# 시간 초과def union(a, b): a_ = find(a) b_ = find(b) if a_>b_: p[a_]=b_ else: p[b_]=a_rank = [1] * (v+1) # 트리의 랭크(높이) 저장def un..

정글/알고리즘 2025.03.30