WIL - 항해99 1주차

스브코·2021년 11월 7일

WIL keyword - JWT, API

JWT란?

JSON Web Token의 줄임말로, JSON 객체를 사용해 정보를 안정성 있게 전달하는 웹 표준.

장점: 사용자 인증에 필요한 모든 정보는 토큰 자체에 포함하기 때문에 별도의 인증 저장소가 필요없다. 사용자의 요청 시, 토큰만 확인하면 되므로 세션 관리가 필요 없고 이에 따른 서버 자원과 비용 절감 효과를 가져 올 수 있다.

단점: 토큰은 쿠키로 저장되어 서버의 데이터베이스에서 사용자 정보를 조작하더라도 토큰에 직접 적용할 수 없다.

사용 예시: 사용자가 로그인하면 서버에 회원임을 인증하는 토큰을 넘겨줌으로써 이후 회원만 접근할 수 있는 서비스 영역에서 신분을 확인할 수 있다.

JWT토큰에는 payload(id값, expiration time)과 secret key가 필요하다.

token 발급

token = jwt.encode(payload, SECRET_KEY, algorithm='HS256').decode('utf-8')

아래와 같이 현재 로그인한 사용자의 정보를 쿠키에서 가져올 수 있다.

token_receive = request.cookies.get('mytoken')

쿠키 개념 정리

브라우저의 자체 데이터 베이스. 페이지에 관계없이 브라우저에 임시로 데이터를 저장한다. dict형태로 저장이 되며, 한번 로그인하면 다시 로그인할 필요가 없게 해준다. 브라우저를 닫으면 자동으로 삭제 되거나, 일정시간이 지나면 삭제되게 할 수 있다.

API란?

wiki definition: API(Application Programming Interface, 응용 프로그램 프로그래밍 인터페이스)는 응용 프로그램에서 사용할 수 있도록, 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 뜻한다. 주로 파일 제어, 창 제어, 화상 처리, 문자 제어 등을 위한 인터페이스를 제공한다.

정말 깔끔한 API 개념 정리 (출처 - [https://dev-dain.tistory.com/50])(https://dev-dain.tistory.com/50)

  • 개발자가 프로그램을 만드는데 필요한 어떤 기능을 직접 구현하지 않고 API 제공자들이 제공하는 데이터와 모듈 등을 갖다쓸 수 있게 해주는 게 API와 API 문서이다.

  • 예를 들어 내가 네이버를 통해 내 페이지를 네이버 서비스에 공유하고 싶다면 네이버에서 제공하는 공유하기 API를 문서에서 제시하는대로 맞춰서 쓰면 된다.

  • API가 공개되지 않았다면 쓸 수 없다. 또 공개 API라고 하더라도 호출 횟수가 많아지면 비용을 지불해야 할 수도 있다.

회고

다음 프로젝트에서는 서면이 아니라 API 문서화 도구를 이용해 문서화를 해봐야겠다.

1주차 프로젝트에서 한 문서화 방식

표를 만들어서 메소드 URI, 요청 파라미터, 응답 status code별 설명등을 컬럼으로 만들어 정리

위 방식의 문제점 (출처)

  • 변경 추적이 어려움
  • 변경이 생길 때마다 프론트엔드에게 새로운 파일을 전달해주어야함
  • API design시 중복성 추상화가 어려움
  • 가독성이 나쁨

포스트맨으로 문서화를 해본적이 있지만 출처를 보니 GitBook을 한번 써봐야 겠다.

주특기를 Spring으로 정했는데 Spring에는 Spring REST Docs라는 도구가 있어서 참고해야겠다. (출처 - https://brunch.co.kr/@purpledev/27)

profile
익히는 속도가 까먹는 속도를 추월하는 그날까지...

0개의 댓글