6/20일(월)부터 항해99가 본격적으로 시작되었다. 월요일부터 목요일까지 단 4일동안 미니프로젝트가 진행되었다. 미니프로젝트는 입학시험으로 진행했던 Flask로 진행을 했고 미니프로젝트 진행과정에서 스파르타코딩클럽에서 지급해준 Git강의와 웹개발플러스강의를 참고해 진행했다.
정말 짧은 기간이라서 월요일에 팀원들과 프로젝트 주제와 구현목록, API명세를 정했다. 4일이라는 짧은 시간, 그리고 전공자와 비전공자가 섞여있었기 때문에 첫날 회의가 정말 활발하게 진행되었다.
이번 포스팅은 미니프로젝트를 진행하면서 사용한 JWT인증방식과 API에 대해 포스팅하려고한다.
API
API는 Application Programming Interface(애플리케이션 프로그램 인터페이스)의 줄임말.
API란?
API : 정의 및 프로토콜 집합을 사용하여 두 소프트웨어 구성 요소가 서로 통신할 수 있게 하는 메커니즘.
API의 맥락에서 애플리케이션이라는 단어는 고유한 기능을 가진 모든 소프트웨어를 나타낸다.
인터페이스는 두 애플리케이션 간의 서비스 계약이라고 할 수 있다.
이 계약은 요청과 응답을 사용하여 두 애플리케이션이 서로 통신하는 방법을 정의.
API 문서에는 개발자가 이러한 요청과 응답을 구성하는 방법에 대한 정보가 들어 있다.
API 작동방식
API 아키텍처는 일반적으로클라이언트와서버 측면에서 설명된다.
요청을 보내는 애플리케이션을 클라이언트.
응답을 보내는 애플리케이션을 서버.
API의 예: 기상청의 소프트웨어 시스템에는 일일 기상 데이터가 들어 있다. 휴대폰의 날씨 앱은 API를 통해 이 시스템과 "대화"하고 휴대폰에 매일 최신 날씨 정보를 표시한다. 따라서 기상청의 날씨 데이터베이스는 서버이고 모바일 앱은 클라이언트입니다.
API 종류
API가생성된 시기와이유에 따라 API는 네 가지 방식으로 작동할 수 있습니다.1. SOAP API 이 API는 단순 객체 접근 프로토콜을 사용한다. 클라이언트와 서버는 XML을 사용하여 메시지를 교환한다.과거에 더 많이 사용되었으며유연성이 떨어지는 API이다. 2. RPC API 이 API를원격 프로시저 호출이라고 한다. 클라이언트가 서버에서 함수나 프로시저를 완료하면 서버가 출력을 클라이언트로 다시 전송한다. 3. Websocket API Websocket API는 JSON 객체를 사용하여 데이터를 전달하는 또 다른 최신 웹 API 개발이다. WebSocket API는 클라이언트 앱과 서버 간의양방향 통신을 지원한다. 서버가 연결된 클라이언트에 콜백 메시지를 전송할 수 있어 REST API보다 효율적이다. 4. REST API 오늘날웹에서 볼 수 있는 가장 많이 사용되고 유연한 API이다. 클라이언트가 서버에 요청을 데이터로 전송한다. 서버가 이 클라이언트 입력을 사용하여 내부 함수를 시작하고 출력 데이터를 다시 클라이언트에 반환한다.
JWT인증방식
JWT : JSON 웹 토큰(JSON Web Token)은 선택적 서명 및 선택적 암호화를 사용하여 데이터를 만들기 위한 인터넷 표준으로, 페이로드는 몇몇 클레임(claim) 표명(assert)을 처리하는 JSON을 보관하고 있다.(출처 : 위키백과)
로그인 인증방식에는 대표적으로 세션/쿠키와 JWT 2가지가 있다. 그 중에서 JWT인증방식에 대해 알아보도록 하자!
동작방식
Flask에서 사용법
PyJWT설치
pip install PyJWT
로그인 시 DB에서 사용자 확인 후 찾은 경우 아이디와 토큰 만료 시간을 저장하는 토큰을 만들어 넘겨준다.