개발일지
개발일지 45일차
index.ys
2023. 5. 6. 02:19
swagger
- swagger 깃허브에서 클론 해오기
git clone https://github.com/swagger-api/swagger-ui.git
- cors설정
npm install http-server --cors
- dist폴더를 원하는 곳으로 이동후 나머지 폴더 및 파일삭제
swagger 패키지 설치
- swagger-jsdoc : jsdoc주석으로 Swagger API 문서를 표현하기 위해 사용
- swagger-ui-express: swagger-ui와 express를 연결하기 위해 사용
npm install swagger-jsdoc swagger-ui-express --save-dev
swagger.js 파일 생성후 환경 설정
const swaggerUi = require("swagger-ui-express")
const swaggereJsdoc = require("swagger-jsdoc")
const options = {
swaggerDefinition: {
openapi: "3.0.0",
info: {
version: "1.0.0",
title: "개발중",
description:
"프로젝트 설명 Node.js Swaager swagger-jsdoc 방식 RestFul API 클라이언트 UI",
},
servers: [
{
url: "http://localhost:3000", // 요청 URL
},
],
},
apis: ["./routers/*.js", "./routers/user/*.js"], //Swagger 파일 연동
}
const specs = swaggereJsdoc(options)
module.exports = { swaggerUi, specs }
app.js에 swagger 라이브러리 require
const { swaggerUi, specs } = require("./swagger")
app.use("/api-docs", swaggerUi.serve, swaggerUi.setup(specs))
routers 폴더에 index.js 설정
const router = require("express").Router()
const user = require("./user")
/**
* @swagger
* tags:
* name: Users
* description: 유저 추가 수정 삭제 조회
*/
router.use("/user", user)
module.exports = router
api-docs 경로 접속
실제 router를 연결하는 부분에 @swagger 문서를 작성하여 api테스트
fs모듈
파일읽기
- readFile메서드
fs.readFile('경로', 'utf8', callback); // 비동기
fs.readFileSync('경로'); // => <data> // 동기
파일 읽기 예시
app.get('/:id', async (req, res) => {
const { id } = req.params
console.log(id)
try {
// fs.readFile('경로', 'utf8', callback); // 비동기
// fs.readFileSync('경로'); // => <data> // 동기
fs.readFile('./test.txt', 'utf8', (err, data) => {
console.log(data + "(1)");
});
const data = fs.readFileSync('./test.txt', "utf8");
console.log(data + "(2)")
res.send("hi")
} catch (err) {
console.log(err);
}
})
동기적으로 호출된 함수 실행후 비동기 함수 실행
test.txt
안녕하세요
파일쓰기
- writeFile 메소드
fs.writeFile(경로, data, [options], callback) // 비동기
fs.writeFileSync(경로, data, [options]) // 동기
파일 쓰기 예시
app.get('/:id', async (req, res) => {
const { id } = req.params
console.log(id)
try {
// fs.writeFile(경로, data, [options], callback) // 비동기
// fs.writeFileSync(경로, data, [options]) // 동기
fs.writeFile('./test.txt', "수정할 데이터1", (err) => {
fs.readFile('./test.txt', 'utf8', (err, data) => {
console.log(data);
});
})
} catch (err) {
console.log(err);
}
})
변경된 test.txt파일내용
파일 쓰기 동기적 처리예시
app.get('/:id', async (req, res) => {
const { id } = req.params
console.log(id)
try {
// fs.writeFile(경로, data, [options], callback) // 비동기
// fs.writeFileSync(경로, data, [options]) // 동기
fs.writeFileSync('./test.txt', "수정합니다.");
const data = fs.readFileSync('./test.txt', "utf8");
console.log(data);
// fs.writeFileSync('./test.txt', "수정합니다.");
// const data = fs.readFileSync('./test.txt', "utf8");
} catch (err) {
console.log(err);
}
})
파일 목록 받아오기
fs.readdir('./', function (err, filelist) {
res.json({ filelist });
});