"이번 프로젝트는 API를 만들어서 Swagger를 통해 공유하고,,, 어쩌고저쩌고,,"
Swagger,,, 갑자기 스웩이요?
제가 아는 그 스웩이요?
아니다.
정신 차리고 개념을 보자.
Swagger란?
"Swagger는 API 설명서를 자동으로 만들어 주는 도구이다."
쉽게 말하자면, API를 설명하고 시각화하며 테스트할 수 있게 도와주는 역할의 도구이다.
개발자와 클라이언트 간의 소통을 돕는 데 유용하다.
🤔 굳이 써야 하나요?
녜.
왜냐면
‼️ 개발자, QA, 클라이언트 간의 소통을 훨~~~씬 원활하게 해 줌
(알겠지만 프로젝트에서 가장 어려운 건 의. 사. 소. 통)
‼️ Swagger는 코드에서 바로 문서를 생성하므로 별도로 문서 작성할 필요 없음
(개발자는 귀찮은 문서작성 안 해서 좋고,
클라이언트는 복잡한 문서내용 쉽게 볼 수 있어서 좋고)
‼️ API가 여러 버전이 생길 수 있는데 이 또한 Swagger에서 자동으로 관리해 줌
(개발자 입장에서 너무 편함)
결론적으로, Swagger는 API 설명서의 Google Docs와 같은 역할을 한다.
쓰지 않을 이유가 없다.
각설하고, chatGPT를 활용한 데모 프로젝트를 만들어서 직접 익혀보자
1. VScode를 열고 터미널을 연다.(Ctrl + `)
2. 프로젝트 폴더를 만들 곳에, api_server라는 폴더명으로 폴더를 만든다.
3. File > open folder > api_server를 선택해서 연다.
4. 터미널에서 초기화하는 명령어를 입력한다.
( npm init -y에서 -y의 의미는 npm init을 진행하면서 많은 질문들에 다 yes로 진행하겠다는 의미이다.)
5. swagger-ui-express를 설치한다.
❓ swagger-jsdoc란 코드에 작성된 JSDoc 주석을 기반으로 Swagger 문서를 생성
❓ swagger-ui-express란 생성된 Swagger 문서를 UI형태로 보여줌
6. 그럼 이제 실제 서버를 만들어보자.
우선 index.js라는 파일을 생성해 준다.
그럼 api_server 폴더에 index.js 파일이 생성된 게 확인된다.
7. 이제 생성된 index.js 파일에 하단 내용을 붙여 넣기 한다.(chat GPT 참조)
const express = require('express');
const swaggerUi = require('swagger-ui-express');
const swaggerJsdoc = require('swagger-jsdoc');
const app = express();
const port = 3000;
// Swagger 설정
const swaggerOptions = {
definition: {
openapi: '3.0.0',
info: {
title: 'My API',
version: '1.0.0',
description: 'A simple API documentation',
},
servers: [
{
url: 'http://localhost:3000',
},
],
},
apis: ['./routes/*.js'], // API 경로
};
const swaggerSpec = swaggerJsdoc(swaggerOptions);
// Swagger UI 엔드포인트
app.use('/api-docs', swaggerUi.serve, swaggerUi.setup(swaggerSpec));
// JSON 데이터 처리
app.use(express.json());
// 기본 라우트
app.get('/', (req, res) => {
res.send('Hello, API Server!');
});
// API 라우트 추가
const apiRoutes = require('./routes/api');
app.use('/api', apiRoutes);
// 서버 시작
app.listen(port, () => {
console.log(`Server running at http://localhost:${port}`);
console.log(`Swagger docs available at http://localhost:${port}/api-docs`);
});
8. 그다음에 Swagger 문서에 추가될 API 경로는 별도의 파일로 분리하기 위해, routes라는 폴더를 생성하고 그 하위에 api.js파일을 생성한다.
9. 그럼 이제 api_server 폴더 하위에 routes라는 폴더가 생기고, 그 안에 api.js파일이 생성돼있는 게 확인 가능할 것이다.
10. 그럼 생성된 api.js 파일에 하단 내용을 붙여 넣기 한다.(chatGPT 참조)
const express = require('express');
const router = express.Router();
/**
* @swagger
* /api/hello:
* get:
* summary: Returns a hello message
* responses:
* 200:
* description: A hello message
* content:
* application/json:
* schema:
* type: object
* properties:
* message:
* type: string
* example: "Hello, World!"
*/
router.get('/hello', (req, res) => {
res.json({ message: 'Hello, World!' });
});
module.exports = router;
세팅은 이게 끝이다.
11. 그럼 이제 실행을 위해 터미널에 하단 명령어를 입력해서 실행시킨다.
12. localhost:3000을 실행해 보자.
짜잔
잘 나온다.
주소창에 localhost:3000/api-docs를 입력하면 아래와 같은 화면이 뜬다.
default에 있는 /api/hello 항목은 우리가 아까 세팅할 때 만든 데모 데이터이다.
버튼을 아래로 눌러보면
Curl과 URL로 요청할 수 있는 방법이 나와있고, 아래에 응답코드와 내용 그리고 응답헤더가 포함되어 있다.
Try it out 버튼을 눌러서 excute를 누르면 실행이 가능하다.
(현재 데모 데이터는 GET방식이라 parameter를 입력받는 형태가 아니라서 변경사항이 없다)
심화과정은 2탄으로..👍
https://ashley-choi.tistory.com/61
Swagger API 사용법 2탄
1탄에서 기본적인 Swagger 세팅은 마쳤다.이번엔 좀 더 심화 과정을 진행해보려 한다. 1. chatGPT한테 ' 아까 세팅한 api server와 swagger에 CRUD를 추가해 줄 수 있어?'라고 질문했더니 아래와 같은
ashley-choi.tistory.com
'이것저것 공부' 카테고리의 다른 글
API 게이트웨이(API Gateway) (1) | 2025.01.16 |
---|---|
자료구조 힙(Heap) 예제 및 개념 (0) | 2025.01.15 |
Swagger API 사용법 2탄 (0) | 2024.11.27 |
Swagger API 사용법 번외(CRUD 설명) (0) | 2024.11.25 |
인터넷은 어떻게 작동할까? How does the internet work? (4) | 2024.07.23 |