2019년 1월 29일 화요일

[TOY PROJECT] 야근/대휴 관리 시스템 개발 - 서버 설계 편( express 사용, mssql 연동, get/post 처리 )

야근/대휴 관리 시스템을 개발하기 위해 화면, DB에 이어 서버 차례가 왔다.
서버는 Node js를 통해 돌릴 것이며 로그를 남기는 등의 기능은 추후에 추가하기로 하자.
이번 편에서는 간단하게 DB를 연동하고 서버와 클라이언트(화면)간에 데이터를 주고 받는 get/post 처리를 해보도록 하자.

20190608 깃헙주소 추가 https://github.com/parksuseong/toy_time_manage

1. 화면편
[TOY PROJECT] 야근/대휴 관리 시스템 개발 - 반응형 화면 설계 편( bootstrap , jqgrid, get/post 호출 )
2. 서버편
[TOY PROJECT] 야근/대휴 관리 시스템 개발 - 서버 설계 편( express 사용, mssql 연동, get/post 처리 )
3. 데이터베이스 편
- [TOY PROJECT] 야근/대휴 관리 시스템 개발 - 데이터베이스 설계 편

먼저 node js 의 대표적인 프레임워크인 express를 활용하고 DB는 MSSQL을 사용해보자.

server.js는 간단하게 구현할 수 있다.


express를 활용하고 DB는 Tedious를 써서 연동한다. 참고로 Tedious는 Microsoft의 SQL Server 인스턴스와 상호 작용하는 데 사용되는 TDS 프로토콜 구현을 제공 하는 Node 패키지라고 한다. 

config에 mssql 정보(계정,비번,서버,옵션)을 미리 작성해주었다. 참고로 node js에서 MSSQL을 연동하려면 server에 ip나 hostname을 적어주어야하는데 이 부분때문에 미리 mssql 구성관리자에서 ip나 별칭으로 접속할 수 있도록 세팅해주어야 한다.
(블로그에 ssms에서 별칭, ip로 접속하는 방법을 포스팅했었다.)


1. DB에 데이터 INSERT 하기
먼저 사용자가 입력한 값으로 DB 정보를 수정하는 기능을 만들건데 이 부분은 post로 작성했다.
화면에서는 다음처럼 넘겼다.
url : 'http://127.0.0.1:8888/add_work'
그리고 서버에서는 다음처럼 처리하였다.

화면상에서 추가 근무를 등록하면 user_id와 시작/종료 시간, 그리고 사유를 서버로 보내는데 서버에서는 아래처럼 받아서 프로시저를 호출하여 처리하였다.
app.post("/add_work", function(request, response){
    EXE_USP_DATATEAM_INSERT_OVERTIME_WORK_LOG(request.body.user_id, request.body.fr_dt, request.body.to_dt, request.body.reason);
    response.end('입력이 성공하였습니다');
});

2. DB에서 데이터 SELECT 하기
두번째로 화면에서 조회를 클릭하면 DB에 저장된 정보를 읽어와서 화면에 보내주는 것은 get으로 처리하였다.

화면에서 넘길 때는 다음처럼 넘겼다.
url : 'http://127.0.0.1:8888/search_work?user_id='+$('#search_user_id').val(),
그리고 서버에서는 다음처럼 처리하였다.

조회 결과를 rows에 담아 화면에 넘기면 화면에서는 그리드로 처리한다.

추가근무 등록/조회 용으로 위에서 설명한 서버 상태를 바꾸는 post, 데이터를 가져오는 get을 똑같이 하나 더 만들어주면 작업이 끝난다.

전체 코드는 아래 경로에 올려놓았다.
https://drive.google.com/open?id=1mestYmeMhxOX_t90PDuHtdZ5B_vbZ5Cr

댓글 없음:

댓글 쓰기

2022년 회고

 올해는 블로그 포스팅을 열심히 못했다. 개인적으로 지금까지 경험했던 내용들을 리마인드하자는 마인드로 한해를 보낸 것 같다.  대부분의 시간을 MLOps pipeline 구축하고 대부분을 최적화 하는데 시간을 많이 할애했다. 결국에는 MLops도 데이...