expressjs 및 postgresql을 사용하여 나머지 API 만들기

21863 단어 tutorialjavascriptapi
안녕 세상! 이 기사에서는 postgresql과 expressjs를 사용하여 나머지 API를 만드는 방법을 배웁니다. 우리는 이 프로젝트에 자바스크립트를 사용할 것입니다.

먼저 이 프로젝트의 전제 조건이 무엇인지 알려주세요.
다음이 있어야 합니다.
  • javascript와 nodejs에 대한 기본지식
  • 는 기본 크러드 작업
  • 에 익숙해야 합니다.
  • sql 명령에 익숙해야 함
  • expressjs
  • 에 대한 기본 지식이 있어야 합니다.

    유용한 링크
  • https://nodejs.dev/en/learn/
  • https://www.postgresql.org/docs/current/sql-commands.html
  • http://expressjs.com/

  • 설치 프로그램 링크
  • 노드JS: https://nodejs.org/en/download/
  • PostgreSQL: https://www.postgresql.org/download/

  • 먼저 "package.json"으로 프로젝트 폴더를 초기화합니다.

    npm init -y
    


    그런 다음 express, cors(원본 간 요청 허용) 및 pg(postgresql에 연결)를 설치합니다.

    npm i express cors pg
    


    그런 다음 nodemon을 개발 종속성으로 설치하여 서버를 자동으로 다시 로드합니다.
    프로덕션 서버에서 nodemon을 사용하지 마십시오.

    npm i -D nodemon
    


    데이터베이스에 연결하기 전에 먼저 데이터베이스를 생성합니다.
  • 데이터베이스를 만들고 원하는 이름을 지정합니다.


  • 그런 다음 스키마로 이동하고 테이블을 마우스 오른쪽 버튼으로 클릭합니다. 테이블에 "블로그"라는 이름을 지정하십시오.


  • 테이블에 지정된 열을 생성합니다
  • .




    데이터베이스에 연결할 "db.js"파일을 만듭니다.

    const { Pool } = require('pg');
    
    const pool = new Pool({
        host: 'localhost',
        user: 'username',
        password: 'password',
        port: 5432,
        database: 'db_name'
    })
    
    module.exports = pool;
    



    이제 route라는 폴더를 만들고 그 안에 "blog.js"파일을 만들어 보겠습니다.

    그런 다음 필요한 가져오기를 수행합니다.

    const express = require('express');
    const router = express.Router();
    const pool = require('../db');
    


    첫 번째 API 경로는 데이터베이스에서 모든 블로그를 쿼리하는 것입니다. pool.query('')를 사용하여 SQL 명령을 실행합니다.

    router.get('/', async (req, res) => {
        let blogs = await pool.query('SELECT * FROM blogs ORDER BY blogs.timestamp ASC'); // Order posts by ascending order
        res.status(200).json({ status: 200, totalResults:blogs.rowCount ,blogs: blogs.rows });
    })
    


    그런 다음 두 번째 api 경로는 데이터베이스에서 특정 블로그를 쿼리하는 것입니다.

    router.get('/:slug', async (req, res) => {
        let blog = await pool.query(`SELECT * FROM blogs WHERE slug='${req.params.slug}'`);
        if (blog.rowCount === 0) {
            res.status(404).json({ status: 404, message: 'No such blog was found!' });
        }else {
            res.status(200).json({ status: 200, blog: blog.rows });
        }
    })
    


    그런 다음 세 번째 api 경로는 데이터베이스에 블로그를 데이터베이스에 추가하는 것입니다.

    router.post('/addblog', async (req, res) => {
        const { title, tagline, slug, description } = req.body;
        let saveBlog = await pool.query(`INSERT INTO blogs (title, tagline, slug, description) VALUES ('${title}', '${tagline}', '${slug}', '${description}')`);
        if (!saveBlog) {
            res.status(404).json({ status: 404, message: 'Some error occurred! Cannot save blog :(' });
        }else {
            res.status(200).json({ status: 200, messaeg: 'Your blogpost has been added successfully!' });
        }
    })
    


    그런 다음 네 번째 api 경로는 데이터베이스의 특정 블로그를 업데이트하는 것입니다.

    router.put('/updateblog/:slug', async (req, res) => {
        const { title, tagline, slug, description } = req.body;
        let saveBlog = await pool.query(`UPDATE blogs SET title='${title}', tagline='${tagline}', slug='${slug}', description='${description}' WHERE slug='${req.params.slug}'`);
        if (!saveBlog) {
            res.status(404).json({ status: 404, message: 'Some error occurred! Cannot update blog :(' });
        }else {
            res.status(200).json({ status: 200, messaeg: 'Your blogpost has been updated successfully!' });
        }
    })
    


    그런 다음 네 번째 api 경로는 데이터베이스에서 특정 블로그를 삭제하는 것입니다.

    router.delete('/deleteblog/:slug', async (req, res) => {
        let saveBlog = await pool.query(`DELETE FROM blogs WHERE slug='${req.params.slug}'`);
        if (!saveBlog) {
            res.status(404).json({ status: 404, message: 'Some error occurred! Cannot delete blog :(' });
        }else {
            res.status(200).json({ status: 200, messaeg: 'Your blogpost has been deleted successfully!' });
        }
    })
    


    그런 다음 라우터 모듈을 내보냅니다.

    module.exports = router;
    



    모든 api 경로를 처리할 "index.js"파일을 만듭니다.
    필요한 수입품 만들기

    const express = require('express');
    const cors = require('cors'); 
    const app = express(); // initialization of express with app
    const port = 5000;
    


    그런 다음 이 두 줄의 코드를 작성합니다.

    app.use(cors()); // enable cross origin requests
    app.use(express.json()); // use default json body parser to parse the data.
    


    API 경로 사용

    app.use('/api/blogs', require('./routes/blog'))
    


    맞춤 404 메시지 만들기

    app.use((req, res, next) => {
        res.status(404).json({ status: 404, message: 'No such route was found! Please go to /api/blogs.' });
    })
    


    지정된 포트에서 수신 대기

    app.listen(port, () => {
        console.log(`RestAPI listening on http://localhost:${port}`)
    })
    


    예이! 나머지 API를 성공적으로 만들었습니다.

    좋은 웹페이지 즐겨찾기