[WIL] 항해99 1주차 회고록

전인호·2022년 6월 30일
0

항해99

목록 보기
1/6
post-thumbnail

🚢 항해99 1주차 회고

정보의 부재에서 오는 비효율성은 생각보다 크다.

우물 안에 개구리라는 것을 크게 실감했던 한 주였다.
그동안의 나는 확실히 정보의 부재에서 오는 비효율성이 컸다.

매번 혼자서 이것저것 찾아보고, 막연히 공부를 하는 것과는 달리
짜여져 있는 커리큘럼 안에서 새로운 지식을 습득하다보니
배우는 부분에 있어서의 안정감도, 내용의 질도 확실히 달랐다.


📕 이번 주차에 배운 내용

Ajax는 서버 통신을 위해 쓰이는 녀석.

$.ajax({
  type: "GET",
  url: "요청할 url",
  data: {},
  success: function (response) {
    // 서버가 준 데이터가 response에 담김.

이녀석과 함께,
파이썬을 기반으로 서버를 만드는 프레임워크인 Flask를 사용하여

from flask import Flask
app = Flask(__name__)

@app.route('/')
def homework():
   return render_template('index.html')

if __name__ == '__main__':  
   app.run('0.0.0.0',port=5000,debug=True)

클라이언트와 서버 사이의 대략적인 동작 원리를 이해 할 수 있었다.
위 코드를 run하면, http://localhost:5000/로 접속가능


📗 서버란?

  • 결국, 서버라는 것은 API라는 창구를 통해 클라이언트(브라우저, 핸드폰)와
    소통하는 녀석이다.

이 때, 서버는 요청을 받으면 HTML+CSS+JS 파일을 주기도 하고,
JSON(딕셔너리와 리스트를 합친형태) 형식으로 데이터를 주기도 한다.


📘 그렇다면 API는?

  • API란 서버가 요청을 받기 위해 뚫어놓은 창구인 셈이다.

POST(주로 데이터를 수정할 때), GET(주로 데이터를 가져올 때) 등,
여러가지 타입이 존재한다.

클라이언트와 서버는 이 특정 API라는 통로로 요청을 주고받는 것이다.

app.py와 index.html 사이에서 실제로 위와 같은 형식으로
데이터를 주고 받는 과정을 연습해 보았다.

추가로 여기서 사용한 $('#id').val()과 같은 문법은 JQuery인데,

  • JQuery는 JavaScript의 라이브러리로써 HTML 조작을 쉽게 해준다는 특징이 있다.

📙 로그인 기능 구현. JWT란?

1주차 미니 프로젝트로 스케쥴러를 만드는 프로젝트를 진행했는데,
나는 회원가입을 포함하는 로그인 기능을 구현하는 부분을 맡았다.

이 로그인 과정에서 필요한 핵심적인 요소가 JWT다.
JWT에 대해 언급하기전에, 먼저 기본적인 HTTP에 대한 이해가 필요하다.

HTTP(Hyper Text Transfer Protocol)란, 서버와 클라이언트 간의
프로토콜(통신 방법)이다.

로그인 기능을 이용하기 위해서는 서버와 클라이언트 사이에
데이터를 주고받는 통신 방법이 필요한데 이것을 바로 HTTP라고 한다.

즉, 앞에서 언급했던 API와의 관계를 잠시 살펴보면
HTTP API라는 것은 HTTP를 사용하여 소통하는 API인 셈이다.
보통 우리가 흔히 들어본 OPEN API, facebook API, kakao API 등의
대부분의 API는 HTTP라는 통신 규칙으로 소통하는 API이다.


그런데 이러한 HTTP는 두 가지 특징이 있다.

1. HTTP는 연결을 유지하지 않는다.
2. HTTP는 상태를 유지하지 않는다.

위와 같은 특징으로 인하여 로그인 기능을 구현하는데 문제가 있었다.

  • 연결을 유지하지 않기 때문에
    서버와 클라이언트가 한 번 통신한 후 연결이 끊어지게 되고,
  • 상태를 유지하지 않기 때문에
    서버와 클라이언트는 다음 통신 때 이전 통신에 대한 정보가 없다.

결과적으로 클라이언트는 서버에 요청을 보낼 때 마다
매 번 자신이 누구인지 인증을 해주어야만 한다는 것이다.

ex) 메일을 확인할 때 로그인, 삭제할 때 로그인, 보낼 때 또 로그인

이런 번거로운 작업을 하지 않을 수 있게 해주는 것이 바로 JWT(Json Web Token)이다.

별도의 저장소의 관리가 필요한 세션/쿠키와 달리 JWT는 발급 후
검증만 하면 되기 때문에 추가 저장소가 필요 없어 간편하다는 장점이 있다.

0개의 댓글