라벨이 communication인 게시물 표시

Session authentication(세션 인증) JavaScript 코드

이미지
 안녕하세요. 저번 글에 이어서 실제로 세션을 이용하여 코드를 작성하도록 하겠습니다.  세션에 대한 개념적 설명을 링크 를 참고해 주시기 바랍니다. 먼저 npm init을 진행합니다. npm 초기화 방법은 링크 를 참고해 주시기 바랍니다. 4개의 npm 모듈을 설치합니다. express, express-session, cookie-parser, nodemon 이중 nodemon은 해당 링크 에서 설치 및 사용법이 나와 있습니다. 설치가 완료가 된 다음 위와 같이 index.js파일을 만들어줍니다. const express = require ( "express" ); const session = require ( "express-session" ); const cookieParser = require ( "cookie-parser" ); const app = express (); const PORT = 5000 ; // 서버 동작을 확인하기 위한 파트 app . get ( '/' , ( req , res ) => { res . status ( 200 ); res . send ( "<h1>Working Well</h1>" ) }) app . listen ( PORT , () => console . log ( `Server at ${ PORT } ` )); 위 코드와 같이 작성하고 테스트를 합니다.  위 2개 사진과 같이 서버도 정상 동작 되고 root url의 get 요청도 정상적으로 되었습니다. const express = require ( "express" ); const session = require ( "express-session" ); const cookieParser = require ( "cookie-pars...

Session authentication(세션 인증)

이미지
 안녕하세요. 이번에는 세션에 대해서 알아보도록 하겠습니다. 세션은 유저가 로그인을 한 후 서버에서 클라이언트 쪽으로 응답 및 Session token(세션 토큰)을 전달해 주는 것입니다.  사진1) 유저가 로그인 할  0번 : 처음 유저가 로그인을 진행할때 ID, Password를 클라이언트에 입력합니다.   1번 : 이후 로그인 정보를 클라이언트가 서버쪽으로 전달  2번 : 서버에서 DB쪽과 조회해서 실제 존재하고 비밀번호가 맞는지 확인합니다.   3번 : DB에서 로그인 정보가 맞다는 것을 인증.  4번 : Session토큰을 생성하고 이를 클라이언트에 응답으로 전달 또 DB에도 저장을 합니다.  5번 : 생성한 Session토큰을 DB에 저장 사진1에서 Session토큰은 사용자의 정보를 바탕으로 만들어 집니다.(비밀번호는 제외) 해당 토큰은 각각 클라이언트와 DB에 저장이 됩니다. 해당 토큰이 중간에 해킹당할것을 대비하는 차원에서 사용할수있는 제한시간을 둘수 있습니다. 사진2) 로그인 이후 Data요청  0번 : 유저가 정보를 요청하기 위해 클라이언트에 입력합니다.   1번 : 이후 클라이언트가 Session토큰 정보와 함께 서버쪽으로 요청을 합니다.  2번 :서버에서 토큰을 분석후 DB에 조회를 합니다.  3번 : DB에서 해당유저 정보가 맞다는 것을 인증.  4번 : 요청 자료를 DB에서 조회합니다.  5번 : 요청 자료를 클라이언트로 응답합니다.  이제 클라이언트는 토큰을 이용하여 서버에 자유롭게 요청을 보낼수 있습니다.  JavaScript코드를 짜고 싶으시면 해당 링크 를 참고해 주시기 바랍니다.

HTTP 프로토콜 Method(GET, POST, PATCH, PUT, DELETE)

이미지
 안녕하세요. 이번에는 HTTP 프로토콜의 Method의 일부에 대해서 알아보도록 하겠습니다.  GET 요청  : HTTP요청중 가장 간단한 Method입니다. 보통 브라우저의 url을 이용하여 웹에 접속하는 것이 GET요청 입니다. GET요청으로 인해 Server쪽의 데이터가 변경 혹은 삭제 되어서는 안됩니다. GET요청은 읽기 전용입니다.  POST 요청 : Server에 새로운 데이터의 생성을 요청합니다. 보통 다른 자원에 종속적인 데이터 생성을 요청합니다. PATCH 요청 : 서버에 존재하는 데이터에 대해서 업데이트를 요청합니다. 해당 url의 PUT Method를 이용하여 데이터를 변경합니다. PUT처럼 전체 데이터를 body에 보낼 필요없이 수정할 부분만 보내면 됩니다. PUT 요청 : 서버에 존재하는 데이터에 대해서 업데이트를 요청합니다. 해당 url의 PUT Method를 이용하여 데이터를 변경합니다. 이때 전체 데이터를 body에 보내야 하며 해당 부분에 대해서 변경을 하고 보내야 합니다. DELETE 요청 : 해당데이터를 제거합니다. 

SDK(Software Develop Kit) 개념

이미지
 안녕하세요. 이번에는 SDK에 대한 설명을 드리도록 하겠습니다. 저번 API 설명에 이어서 SDK가 API와 비교해 무엇이 다른지에 대해서 설명 드리겠습니다.  저번에 서버에서 API문서를 클라이언트에서 넘겨준 다음에 그 문서를 기준으로 클라이언트와 서버가 통신을 합니다. 다만 통신을 하기 위한 절차가 번거롭다고 했고 그래서 나온것이 SDK라고 하였습니다.    클라이언트에서 SDK를 사용한다면 해당 SDK에서 지원하는 언어로 사용할수 있습니다. 예로 JAVA, JavaScript, Go 등등 해당 언어로 된 SDK가 있으면 사용할수 있습니다. 그리고 API통신 규약과 상관 없이 SDK에서 요구하는 조건만 충족되면 바로 서버쪽으로 요청을 보낼수 있습니다. 반대로 응답을 받는 경우도 API처럼 JSON타입으로 받을수 있지만 SDK에서 응답을 분석후 적절히 처리해서 클라이언트에 나타낼수 있습니다.   하지만 단점도 있는데 SDK는 모든 API의 구현이 어렵습니다. 구현해야 할 양이 많아지기 때문입니다. 다른 언어와의 호환성도 고려해야 해서 작업량이 많아집니다. 속도가 API에 비해 상대적으로 느려집니다. 이미 SDK에서 한번 처리하고 요청을 하는 것과 API로 바로 요청하는것은 차이가 있습니다. 

API(Application Programming Interface) 통신 개념

이미지
안녕하세요. 이번에는 API의 개념에 대해서 설명할려고 합니다. API의 약자는 'Application Programming Interface'입니다. 즉 앱간 통신을 말하는 것입니다. Web에서는 Client와 Server의 통신을 말합니다.    위 사진은 간단하게 클라이언트와 서버의 API통신을 그리고 있습니다. 클라이언트에서는 서버에 사진을 보내 사진의 위치를 유저에게 알려주는 앱입니다. 서버에서는 클라이언트에 제공받은 사진을 확인하고 위치를 알아낸 다음에 해당 장소를 클라이언트에 API 응답으로 알려줍니다.  이때 클라이언트는 서버에 요청을 할때 method, param, endpoint 등의 양식을 작성해서 서버에 보내줘야 합니다. 서버또한 받은 요청에 대해 응답을 양식에 맞게 클라이언트 한테 보내줘야 합니다. 보통 JSON형식으로 줍니다.  API는 각 앱사이에서 중요한 역할을 하기 때문에 서버 개발자들은 API문서를 만들고 해당 클라이언트에 전달을 합니다. 이 전달 받은 문서를 바탕으로 클라이언트 앱을 만들게 되는 것입니다.  문제는 요청과 응답을 받기 위한 과정, 그리고 응답후에 응답을 처리해서 유저한테 보여줘야 하는 과정이 번거롭습니다. 요청을 하기위해 부수적인 작업들이 많기 때문에 이때 SDK가 등장하게 됩니다. SDK에 대해서는 다음 글에서 작성하도록 하겠습니다.