Axios로 액세스 할 수있는 RESTful API를 쉽고 간편하게 만듭니다 (1)

웹 앱에서 프런트를 구현한 후 API를 다시 준비하는 경우가 많습니다. 이번에는 어쨌든 쉽게 API를 만드는 것을 목표로합니다. node.js의 응용 프로그램 프레임 워크 인 express를 사용합니다.
만들기에 있어서의 조건과 환경은 다음과 같습니다.
  • 앞면에서 axios로 액세스
  • AWS EC2의 Node.js에서 작동합니다 (Node는 설치됨)
  • AWS RDS(엔진은 MySql)에 연결

  • 목표가 되는 아티팩트는 「유저의 등록・편집의 액세스 결과를 json으로 돌려주는 API」입니다. 또한 로그인 등의 세션 관리도 실시합니다. 데이터베이스는 test, 테이블은 users로 합시다. 테이블은 미리 작성되어 있습니다.

    먼저/home/ec2-user에 디렉토리를 만들고 초기화합니다.
    $ mkdir api_sample
    $ npm init
    $ cd api_sample
    

    다양한 대화가 발생하지만 모두 Enter에서 OK입니다. 디렉토리 구성은 다음과 같아야 합니다.
    api_sample
       |- node_modules
       |- package.json
       |- package-lock.json
    

    다음으로 필요한 패키지를 설치합시다.
    $ npm install express
    $ npm install express-session
    $ npm install body-parser
    $ npm install cors
    $ npm install mysql
    

    그 패키지를 설치 이유에 대해.
    1. express -> 그대로
    2. express_session -> 로그인 세션 관리 등에 이용
    3. body-parser > 라우팅 관리
    4. cors > axios로 액세스할 때 CORS 설정 필요
    5. mysql > 이번 DB는 MySql

    이제/home/ec2-user/api_sample 바로 아래에 index.js를 만듭니다.

    index.js
    let express = require('express')
    let mysql = require('mysql')
    let session = require('express-session')
    const cors = require('cors')
    let app = express()
    
    let connection = mysql.createConnection({
      host: '{RDSのエンドポイント}',
      user: '{ユーザー名}',
      password: '{パスワード}',
      port: '3306',
      database: 'test'
    })
    
    app.use(function(req, res, next) {
      res.header('Access-Control-Allow-Origin', 'example.com*')
      res.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept')
      res.header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS')
      next()
    })
    app.use(cors({credentials: true, origin: true}))
    app.use(express.json())
    app.use(session({
      secret: 'secret',
      resave: false,
      saveUninitialized: true,
      cookie: { }
    }))
    
    connection.connect(function(err) {
      if (err) {
        console.error('Database connection failed: ' + err.stack)
        return
      }
      console.log('Connected to database.')
    })
    connection.end()
    
    app.get('/', (req, res) => {
      res.json({msg: 'hello express'})
    })
    
    app.listen(3000, ()=> {
      console.log('Start serv 3000')
    })
    
    

    일단 3000번의 포트로 액세스하면 {msg: 'hello express'}라는 json 데이터를 반환하는 API가 생겼습니다.
    $ node index.js
    

    을 실행한 다음 {ec2 인스턴스 엔드포인트}: 3000을 검색 주소창에 입력하여 테스트해 봅시다. 성공하면 아래와 같은 화면이 될까 생각합니다.


    이것으로 토대는 할 수 있었으므로 다음 번(미정)은 RESTful인 라우팅과 세션 관리, 서버의 상시 기동에 대해서 접하고 싶습니다.

    좋은 웹페이지 즐겨찾기