본문 바로가기
자기계발/Mojo

Mojo를 이용한 간단한 웹 애플리케이션 만들기 - 2

by YK_Lv up 2023. 7. 16.
728x90

코딩

Mojo를 이용한 간단한 웹 애플리케이션 만들기 2

안녕하세요, 여러분! 이번에는 Mojo 웹 프레임워크를 이용하여 간단한 웹 애플리케이션을 만드는 두 번째 실습을 진행해 보겠습니다. 이전에는 'Hello, World!' 웹 애플리케이션을 만들어 보았는데요, 이번에는 조금 더 실질적인 기능을 가진 웹 애플리케이션인 CRUD(Create, Read, Update, Delete) 웹 애플리케이션을 만들어 볼 예정입니다. CRUD는 웹 개발에서 가장 기본이 되는 작업들을 의미합니다. 데이터를 생성(Create), 읽어오는(Read), 업데이트(Update), 그리고 삭제(Delete)하는 것이죠. 이러한 기능들은 데이터베이스 기반의 웹 애플리케이션에서는 필수적인 작업이며, 이를 어떻게 구현하느냐에 따라 웹 애플리케이션의 성능과 사용성이 크게 달라질 수 있습니다. 그럼 이제 본격적으로 실습에 들어가 보도록 하겠습니다. 함께 해보실 준비가 되셨나요? 같이 흥미진진한 코딩 여행을 떠나 봅시다!


이번 실습의 목표

이번 실습에서는 Mojo 웹 프레임워크를 이용하여 CRUD 웹 애플리케이션을 만드는 것이 목표입니다. 우리가 만들 애플리케이션은 간단한 투두 리스트를 구현한 것으로, 사용자는 투두 항목을 생성, 읽기, 업데이트, 삭제할 수 있습니다.

이를 통해 여러분은 다음과 같은 것들을 배울 수 있을 것입니다:

  • 1. Mojo 웹 프레임워크를 이용하여 웹 애플리케이션의 기본 구조를 생성하는 방법
  • 2. 데이터베이스와 Mojo 웹 애플리케이션을 연결하는 방법
  • 3. CRUD 기능을 구현하는 방법
  • 4. 실제 웹 애플리케이션에서 발생할 수 있는 문제들을 해결하는 방법

여러분이 이번 실습을 통해 얻을 수 있는 학습 경험은 굉장히 소중하며, 이를 통해 웹 개발에 대한 더 깊은 이해를 얻을 수 있을 것입니다. 그럼 이제 함께 시작해 봅시다!


실습 준비하기

실습을 시작하기 전에 몇 가지 준비 사항이 있습니다.

  1. 개발 환경 설정 : 앞서 다룬 Perl 설치 및 환경 설정을 참고하여 개발 환경을 준비합니다. Perl이 정상적으로 설치되었으며, 필요한 모듈들이 모두 설치되어 있는지 확인합니다.
  2. Mojo 웹 프레임워크 설치 : 'Mojo 웹 프레임워크 설치 방법' 포스트를 참고하여 Mojo 웹 프레임워크를 설치합니다.
  3. 데이터베이스 설치 : 이번 실습에서는 SQLite를 사용하므로 SQLite가 설치되어 있지 않다면 설치해 주세요. 또한 Perl에서 SQLite를 다루기 위해 DBI 모듈이 필요하므로 이 모듈도 설치합니다.
  4. 텍스트 에디터 : 코드를 작성하기 위한 텍스트 에디터를 준비합니다. 비주얼 스튜디오 코드(Visual Studio Code), 서브라임 텍스트(Sublime Text), 아톰(Atom) 등 여러분이 선호하는 에디터를 사용하면 됩니다.

모든 준비가 완료되었다면 이제 실습을 시작해 볼 시간입니다. 이번 실습에서 우리는 Mojo 웹 프레임워크와 SQLite를 이용하여 투두 리스트 웹 애플리케이션을 만들어 보겠습니다.


간단한 CRUD 웹 애플리케이션 만들기

이제 본격적으로 실습을 시작해 봅시다.우리의 목표는 Mojo 웹 프레임워크를 이용하여 간단한 CRUD 웹 애플리케이션, 특히 투두 리스트 웹 애플리케이션을 만드는 것입니다.

첫 단계는 기본적인 애플리케이션 구조를 만드는 것입니다. 이를 위해 우리는 'mojo generate app' 명령을 이용하겠습니다. 이 명령은 새로운 애플리케이션을 생성할 때 사용하는 것으로, 이를 통해 기본적인 디렉터리 구조와 필요한 파일들을 생성할 수 있습니다.


기본 구조 설정하기

첫 단계는 우리가 만들고자 하는 웹 애플리케이션의 기본 구조를 설정하는 것입니다. 이를 위해 Mojo에서 제공하는 명령어를 이용하여 기본 애플리케이션을 생성해 봅시다.

$ mojo generate app Todo

이 명령어를 입력하면, Todo라는 이름의 애플리케이션을 생성하게 됩니다. 이 때 생성되는 디렉터리와 파일들의 구조는 다음과 같습니다:

Todo/

  lib/

    Todo.pm

  script/

    todo

  t/

    basic.t

- lib/Todo.pm: 애플리케이션의 주 클래스를 포함하고 있는 파일입니다.

- script/todo: 애플리케이션을 시작하는 데 사용하는 스크립트입니다.

- t/basic.t: 애플리케이션의 테스트를 위한 기본 테스트 스크립트입니다.

이제 우리의 애플리케이션의 기본 구조가 설정되었습니다. 다음 단계는 이 애플리케이션에 실제 기능을 추가하는 것입니다. 우리는 이 애플리케이션에 CRUD(Create, Read, Update, Delete) 기능을 추가할 것입니다. CRUD는 대부분의 웹 애플리케이션에서 필수적인 기능입니다. 이를 통해 사용자는 데이터를 생성(Create), 조회(Read), 수정(Update), 삭제(Delete)할 수 있습니다.


데이터베이스 연결하기

웹 애플리케이션에서 데이터베이스 연결은 중요한 요소 중 하나입니다. 이번 실습에서는 SQLite 데이터베이스를 사용하겠습니다. Mojo DBIx::Class와 같은 ORM(Object-Relational Mapping) 도구를 사용하여 데이터베이스와의 상호 작용을 추상화합니다.

먼저 cpanm을 사용하여 필요한 모듈을 설치해야 합니다.

$ cpanm DBIx::Class Mojo::SQLite

그다음,우리의 애플리케이션, 'Todo.pm'에서 사용할 수 있도록 데이터베이스 연결을 설정합니다.

perl

package Todo;

use Mojo::Base 'Mojolicious', -signatures;

 

use Mojo::SQLite;

use Todo::Schema;

 

has schema => sub ($self) {

  my $sql = Mojo::SQLite->new('sqlite:' . $self->home->child('todo.db'));

  return Todo::Schema->connect(sub {$sql->db->dbh});

};

# 나머지 코드...

이 코드는 Mojo::SQLite를 사용하여 SQLite 데이터베이스에 연결하고, 이 연결을 애플리케이션의 'schema' 속성에 저장하는 것입니다. 'schema' 속성은 우리가 만들어낼 데이터베이스 스키마와 상호작용하는 데 사용됩니다. 이제 데이터베이스에 연결하였으니, 다음 단계는 실제 데이터베이스 스키마를 만드는 것입니다. 이 스키마는 우리의 데이터베이스에서 사용될 테이블과 관계를 정의합니다. 이 부분은 다소 복잡할 수 있지만, 차근차근 따라가다 보면 충분히 이해하고 구현할 수 있습니다.


CRUD 기능 구현하기

데이터베이스 연결이 준비되었으니, 이제 실제로 CRUD(Create, Read, Update, Delete) 기능을 구현해 보겠습니다.이 기능들은 웹 애플리케이션에서 가장 일반적으로 사용되는 기능들로, 사용자가 데이터를 생성(Create), 읽기(Read), 수정(Update), 삭제(Delete)하는 것을 가능하게 합니다. 우선, 새로운 할 일을 생성하는 create 메소드를 구현해 봅시다.

perl

sub create ($self) {

  my $title = $self->param('title') // '';

  my $row = $self->app->schema->resultset('Todo')->create({ title => $title });

 

  $self->redirect_to('index');

}

이 메서드는 사용자로부터 입력받은 할 일의 제목을 사용하여 새로운 데이터를 생성하고, 그 결과를 데이터베이스에 저장합니다. 그리고 사용자를 'index' 페이지로 리다이렉트 합니다.

다음으로, 기존의 할 일을 수정하는 update 메소드를 구현해 봅시다.

perl

sub update ($self) {

  my $id = $self->param('id');

  my $title = $self->param('title') // '';

 

  my $row = $self->app->schema->resultset('Todo')->find($id);

  $row->update({ title => $title });

 

  $self->redirect_to('index');

}

이 메서드는 사용자로부터 입력받은 id를 사용하여 해당하는 데이터를 찾고, 사용자로부터 입력받은 새로운 제목을 사용하여 해당 데이터를 수정합니다. 그리고 사용자를 'index' 페이지로 리다이렉트 합니다.마지막으로, 기존의 할 일을 삭제하는 delete 메소드를 구현해 봅시다.

perl

sub delete ($self) {

  my $id = $self->param('id');

 

  my $row = $self->app->schema->resultset('Todo')->find($id);

  $row->delete;

 

  $self->redirect_to('index');

}

이 메서드는 사용자로부터 입력받은 id를 사용하여 해당하는 데이터를 찾고, 해당 데이터를 삭제합니다. 그리고 사용자를 'index' 페이지로 리다이렉트 합니다.이렇게 각각의 CRUD 기능을 구현한 뒤에는, 이를 실제로 동작하도록 연결해 주는 라우팅 설정이 필요합니다. 이에 대해서는 다음 단계에서 다루도록 하겠습니다.


실험 결과 확인 및 문제 해결하기

이제 우리가 만든 웹 애플리케이션의 CRUD 기능이 잘 작동하는지 확인해 봅시다.만약 에러가 발생한다면, 그 원인을 파악하고 해결하는 과정 역시 중요한 학습 과정입니다. 우선, 애플리케이션을 실행하고 웹 브라우저를 통해 접속해 보세요.새로운 할 일을 생성하거나, 기존의 할 일을 수정하거나 삭제해 봅시다.이 과정에서 오류 메시지가 발생한다면, 그 메시지를 기록하고 원인을 찾아보세요. 가장 흔히 발생하는 문제들 중 하나는 데이터베이스 연결 에러입니다. 이는 주로 데이터베이스 정보(이름, 사용자 이름, 비밀번호 등)가 정확하지 않거나, 데이터베이스 서버가 정상적으로 작동하지 않을 때 발생합니다. 이 경우, 애플리케이션의 데이터베이스 연결 설정을 다시 확인하고, 필요하다면 데이터베이스 서버의 상태도 점검해 보세요.또 다른 흔한 문제는 코드의 오류입니다. 오타나 문법 오류, 논리적 오류 등 다양한 원인으로 인해 발생할 수 있습니다. 이런 경우에는 코드를 세밀하게 검토하고, 필요하다면 디버깅 도구를 사용하여 문제를 찾아보세요. 물론, 이 외에도 다양한 문제들이 발생할 수 있습니다. 문제를 해결하는 것은 쉽지 않지만, 그 과정에서 많은 것을 배울 수 있습니다. 문제를 해결하는 데 실패하더라도 좌절하지 말고, 계속 시도해 보세요.그리고 필요하다면, 도움을 청하거나 인터넷에서 해결책을 찾아보세요. 이런 과정들이 모두 프로그래밍 능력을 향상시키는 데 중요한 역할을 합니다.


결론

이번 실습을 통해 Mojo 웹 프레임워크를 사용하여 간단한 CRUD 웹 애플리케이션을 만드는 방법을 배웠습니다. 데이터베이스 연결 설정부터 CRUD 기능의 구현까지, 여러분은 이제 복잡한 웹 애플리케이션을 만들 수 있는 기본적인 기술을 갖추게 되었습니다. 하지만 이것이 우리의 여행의 끝이 아닙니다. 웹 개발은 끊임없이 발전하고 있으며, 새로운 도구와 기술이 계속해서 등장하고 있습니다. 따라서 우리는 항상 새로운 것을 배우고, 기술을 업데이트하며, 기술 변화에 적응해야 합니다. 다음 단계에서는 우리가 만든 애플리케이션을 더욱 발전시키는 방법에 대해 배워볼 것입니다. 예를 들어, 사용자 인증 기능을 추가하거나, 외부 API와 연동하는 기능을 추가하는 등의 작업이 포함될 수 있습니다. 또한, 효율적인 개발을 위한 다양한 도구와 방법에 대해 알아보겠습니다. 이에는 버전 관리 시스템인 Git, 코드 테스트와 디버깅 도구, 그리고 코드를 효과적으로 관리하고 협업하기 위한 방법들이 포함됩니다. 항상 새로운 것을 배울 준비가 되어있어야 합니다. 프로그래밍은 문제 해결의 여정이며, 이 여정을 통해 우리는 계속해서 성장하고 발전할 수 있습니다. 끊임없이 배우고, 연습하며, 도전하는 것이 중요합니다. 행운을 빕니다!

 

추가적으로 도움이 될만한 포스팅을 추천드리겠습니다.

 

Mojo의 템플릿 시스템 사용 방법

Mojo의 템플릿 시스템 사용 방법 웹 개발을 하다 보면 동적인 웹 페이지를 생성해야 하는 경우가 많습니다. 이를 위해 사용하는 것이 바로 템플릿 시스템입니다. 템플릿 시스템은 정적인 HTML 코드

level-up-myself.tistory.com

 

Mojo에서 라우팅 설정하는 방법

Mojo에서 라우팅 설정하는 방법 이 포스트에서는 Mojo 웹 프레임워크를 사용하여 라우팅을 설정하는 방법에 대해 알아봅니다. 여기에는 기본 라우팅 설정, 조건부 라우팅 설정, 그리고 와일드카드

level-up-myself.tistory.com

 

Mojo 웹 애플리케이션의 기본 구조

소개 안녕하세요,이번 포스트에서는 Mojo 웹 애플리케이션의 기본 구조에 대해 설명하겠습니다. Mojo 웹 애플리케이션의 기본 구조 Mojo 웹 애플리케이션의 구조 Mojo 웹 애플리케이션은 다음과 같

level-up-myself.tistory.com

 

300x250

댓글