본문 바로가기
  • " 집요함 "
  • " 집요함 "
  • " 집요함 "
웹/백엔드 서버

API 최적화 & API의 명세서

by joen00 2022. 4. 19.

API 최적화 

API를 최적화 하는 방법은 API를 분류하여 만들어준다. 

이유는 파일 이름만 보고 유추가 가능해진다. 예를 들면 account.js의 경우 회원정보릐 추가, 수정, 삭제, 가져오는 기능이 있겠구나라는 유추가 가능하다. 

 

0. router폴더를 만들어주고 pages.js와 account.js를 만들어준다.

1. pages.js

const router = require("express").Router() //import용량을 적게하도록
const path=require("path")

router.get("/",(req,res)=>{
    res.sendFile(path.join(__dirname,"../index.html")) //path.join -> 경로 합쳐주기
})
router.get("/loginPage",(req,res)=>{
    res.sendFile(path.join(__dirname,"../loginPage.html"))
})

router.get("/signupPage",(req,res)=>{
    res.sendFile(path.join(__dirname,"../signupPage.html"))
})

router.get("/boardwritePage",(req,res)=>{
    res.sendFile(path.join(__dirname,"../boardwritePage.html"))
})

module.exports = router

이런식으로 페이지만 갖게 해주는 api를 만들어준다.

 

* const router = require("express").Router()를 해주는 이유는 import의 용량을 적게하여 빠르게 작동하게 도와준다.

* path를 이용하여 경로를 표현해준다.

먼저 path라는 패키지를 import 시켜준다.

path를 사용하지 않으면 "../"를 사용하지 못하고 그대로 출력이 된다. 따라서 path와 join을 이용해준다.

res.sendFile(__dirname+"/loginPage.html") => res.sendFile(path.join(__dirname,"../loginPage.html"))

 

2. account.js

const router = require("express").Router() //import용량을 적게하도록

router.post("/login",(req,res)=>{ 
    const name = req.body.name 
    const pw = req.body.pw
    const sql = `SELECT * FROM user WHERE name="${name}"`;
    const result = {
        "success" : false
    }
    maria.query(sql, (err,data)=>{
        if(data.length === 0){
            console.log('로그인 실패');
            res.send(result)
        }
        else if(data[0].pw !== pw){
            console.log('로그인 실패');
            res.send(result)
        }
        else {
            result.success=true;
            console.log(data[0].pw);
            console.log(data[0].name);
            console.log('로그인 성공');
            res.send(result);
        }
    });
})

module.exports = router

 

3. server.js

const pagesApi = require("./router/pages") //외부로 분리시킨 API 파일을 import

// 미들웨어 - api app.use(api이름,사용할 패키지)
app.use("/",pagesApi)
// api이름은 깊이를 갖는다. 
// url 주소의 형태 : localhost//loginPage
const accountApi = require("./router/account") 
app.use("/account",accountApi) //url 주소의 형태 : localhost//account/login

1) const pagesApi = require("./router/pages")를 통해 외부로 분리시킨 API 파일을 import 해준다.

2) app.use("/",pagesApi) => app.use(api이름, 사용할 패키지)를 통해 api를 만들어준다.

 

**** 특징 ****

등록 순서가 중요하다 = 써주는 순서

api는 깊이가 낮은 순서부터 위쪽에 써준다.

 

 

API명세서

API 명 : 로그인
API 설명 : 아이디와 비밀번호 검증 후 로그인 결과 반환

base url : url 주소
endpoint : /account/login
method : POST
body: {
    “id” : string,
    “password” : string
}
result: {
    “success” : boolean
}

 

728x90

댓글