Spring Security - Open API 문서

별빛사막·2025년 1월 10일

Swagger

  • Spring Doc*을 통해서 Swagger(Open API) 만듦

cf) Spring Doc : Spring Boot 애플리케이션에서 Swagger(OpenAPI) 문서를 생성하는 데 사용되는 라이브러리

  • Swagger에서 웬만한 Test를 진행할 수 있다. postman에서는 request를 하나씩 추가하고 test를 진행해야 하는데 Swagger에서는 액션메서드들을 모아서 볼 수 있고 test도 진행할 수 있다.

문서 꾸미기 기능

  • @RequestMapping 의 produces 속성을 통해서 응답 Content-Type을 지정할 수 있다.

ex. @GetMapping(produces = text/html;charset=utf8 또는 text/json;charset=utf8)
기본은 text/pain;charset=utf8이다.

  • springdoc.default-produces-media-type 설정으로 기본 응답 미디어 타입을 전역적으로 설정 가능
springdoc:
  default-produces-media-type: application/json;charset=utf8
  • 쿠키 방식으로 로그인/로그아웃이 되는건 우리가 이를 구현했기 때문이다.
  • @SecurityRequirement(name = "bearerAuth") 사용
    : OPEN API 문서상에 Authorize 버튼이 생기고 bearer방식의 로그인/로그아웃이 가능해진다.
    : 자물쇠가 잠겨있다면 로그인되어 보안이 적용중이다. 자물쇠가 풀려 있다면 지금 로그아웃 상태이다.

: 하위의 모든 액션메서드를 OPEN API 문서상에서 API호출 할 때 bearerAuth 방식의 인증정보가 있다면 적용되도록 허용

  • Authorization 헤더 vs 쿠기 : 이중로그인을 했다면 Authorization 헤더로 로그인된다.
    이는 Authorization 헤더를 우선적으로 로그인하는 로직을 구현했기때문이다.(Swagger의 규칙같은게 아니다)

  • 접근

  1. http://localhost:8080/v3/api-docs
  2. http://localhost:8080/v3/api-docs/apiV1
  3. http://localhost:8080/v3/api-docs/controller

타입스크립트

자바스크립트에 타입을 추가한것. 요즘 프론트엔드에서 타입스크립트를 많이 쓴다.
타입스크립트가 있으면 안정적인 개발이 가능하다.

개념

자바스크립트에서 변수의 타입이 런타임에 결정되는 단점을 해결하고자 정적 타입을 선언해 사용하는 타입스크립트가 등장하게 되었다.

swagger 문서를 활용해 타입스크립트 만들기

http://localhost:8080/v3/api-docs/apiV1 => apiV1.json으로 저장
apiV1.json => 타입스크립트로 변환

위 과정에서 nvm을 다운로드하면 node.js를 여러 버전으로 다운받아 상황에 맞게 사용할 수 있다. node.js가 있어야 타입스크립트로 변환할 수 있다.

window용 nvm.exe 다운로드

nvm --version  //NVM 설치 확인
nvm list //NVM 리스트 확인
nvm install [v22.13.0] //원하는 nvm 버전 확인
nvm use [v22.13.0] //해당 node 버전 활성화

node --v //현재 활성화된 버전 확인

npm config set legacy-peer-deps true # 이제 더 이상 --legacy-peer-deps 를 명시적으로 입력하지 않아도 된다.
npm config get legacy-peer-deps # 확인
npm install -g npm  //npm 최신화

npx --package typescript --package openapi-typescript openapi-typescript apiV1.json -o schema.d.ts 
profile
조금씩 매일 성장하자

0개의 댓글