Code States/TIL

[0328] (페어) WAS와 Web Server - CozStory WAS 개발

ki1111m2 2023. 3. 28. 14:13

서버 코드 작성

읽기

'use strict'

const { readAll, readOne } = require('../../model')

module.exports = async function (app, opts) {
  app.get('/', async function (request, reply) {
    const result = await readAll()

    reply
      .code(200)
      .header('Content-type', 'application/json')
      .send(result)
  })

  app.get('/:id', async function (request, reply) {
    const result = await readOne( /* TODO: 여기에 필요한 값을 넣습니다 */ request.params.id)

    if(result) {
      // TODO: 여기에 필요한 응답을 구현합니다.
      reply
        .code(200)
        .header('Content-type', 'application/json')
        .send(result)
    }
    else {
      // TODO: 여기에 필요한 응답을 구현합니다.
      reply
        .code(404)
        .send('Not Found')
    }


  })
}

쓰기

'use strict'

const { createOne, isValid } = require('../../model')

module.exports = async function (app, opts) {
  app.post('/', async function (request, reply) {
    if(!isValid(request.body)) {

      // TODO: 여기에 필요한 응답을 구현합니다.
      reply
        .code(400)
        .send('Bad Request')

      return;
    }

    const result = await createOne( /* TODO: 여기에 필요한 값을 넣습니다 */ request.body)

    // TODO: 여기에 필요한 응답을 구현합니다.
    reply
      .code(201)
      .header('Content-type', 'application/json')
      .send(result)
  })
}

삭제

'use strict'

const { deleteOne } = require('../../model')

module.exports = async function (app, opts) {
  app.delete('/:id', async function (request, reply) {
    // TODO: DELETE 부분은 밑바닥부터 구현해봅시다.
    const result = await deleteOne(request.params.id)

    if(result){
      reply
        .code(200)
        .header('Content-type', 'application/json')
        .send(result)
    }
    else{
      reply
        .code(204)
        .send('Not Found')
    }
  })
}

수정

'use strict'

const { updateOne, isValid } = require('../../model')

module.exports = async function (app, opts) {
  app.put('/:id', async function (request, reply) {
    if(!isValid(request.body)) {
      // TODO: 여기에 필요한 응답을 구현합니다.
      reply
        .code(400)
        .send('Bad Request')

      return;
    }

    const result = await updateOne(request.params.id, request.body)

    if(result) {
      // TODO: 여기에 필요한 응답을 구현합니다.
      reply
        .code(201)
        .header('Content-type', 'application/json')
        .send(result)
    }
    else {
      // TODO: 여기에 필요한 응답을 구현합니다.
      reply
        .code(404)
        .send('Not Found')
    }


  })
}

 

작동 확인

Action Items

  • Q. 만약 계속해서 서비스를 제공/사용하고 싶다면 어떻게 해야할까요?
    • 서버를 중단 없이 구동한다.
  • Q. 다시 서버를 실행해보세요. 데이터가 그대로 남아있나요? 사라졌다면, 왜 사라졌나요? 이 문제는 어떻게 해결할 수 있을까요?
    • 데이터가 사라진다. 작성한 내용이 서버에 영구적으로 저장되지 않기 때문이다. 데이터베이스를 이용하여 작성한 데이터를 저장해야한다.

나는 macOS에서 작업을 진행중이어서 포트포워딩이나 고정IP 작업을 안해줘도 되는데

팀원분들은 멀티패스를 사용중이어서 해당 작업들을 진행해야한다

이로 인한 오류와 실패로.. 3-4시간씩 머리 싸매고 고민하고..

맥 사길 잘했다고 느끼는 중이다 .. 

예전에 리눅스에서 작업할 때 나는 멀티패스가 아닌 VMware나 버추얼박스에서 진행했어서 멀티패스 환경을 모르기에 도움을 쉽게 못드려서 아쉽다