중간에 사용자의 요청을 받아줄 서버의 IP주소(192.168.0.123)와 도메인 이름을 중개해주는 서버(전화번호부 같은)가 중간에 있었기 때문
(사용자의 요청 --> 중간에 사용자의 요청을 받아줄 서버의 IP주소 + 도메인 이름을 중개해주는 서버 --> 웹 사이트로 이동)
클라이언트의 요청은 서버에 도달했고, API라는 서버의 창구와 같은 곳에 도달
API(application programming interface): 다른 소프트웨어 시스템과 통신하기 위해 따라야 하는 규칙
인터페이스(interface): 서로 다른 두 개의 시스템, 장치 사이에서 정보나 신호를 주고받는 경우의 접점이나 경계면 (즉, 사용자가 기기를 쉽게 동작시키는데 도움을 주는 시스템)
'웹개발 종합반' 에서는 flask가 그 역할을 했음
from flask import Flask
def create_app():
app = Flask(__name__)
//@app.route() 함수: 사용자들의 요청을 가장 먼저 맞이해주는 역할
@app.route('/PrintHelloWorld')
def hello_world():
return 'Hello, World!'
@app.route('/HelloWorldTemplate')
def hello_world():
return render_template('HelloWorldTemaplate")
return app
@app.route('/sign_in', methods=['POST'])
def sign_in():
//클라이언트의 요청이 네트워크를 타고 들어와서, “새로운 정보”인 유저의 ID/Password를 들고 들어왔습니다.
username_receive = request.form['username_give']
password_receive = request.form['password_give']
pw_hash = hashlib.sha256(password_receive.encode('utf-8')).hexdigest()
# 여기!!!!
result = db.users.find_one({'username': username_receive, 'password': pw_hash})
if result is not None:
payload = {
'id': username_receive,
'exp': datetime.utcnow() + timedelta(seconds=60 * 60 * 24) # 로그인 24시간 유지
}
token = jwt.encode(payload, SECRET_KEY, algorithm='HS256')
return jsonify({'result': 'success', 'token': token})
else:
return jsonify({'result': 'fail', 'msg': '아이디/비밀번호가 일치하지 않습니다.'})
//sign_in 메서드가 요청을 처리하는 역할
@app.route('/sign_in', methods=['POST'])
기존의 정보를 이용해서, 유저가 로그인을 시도하려는 아이디 비밀번호와 같이 대조
--> 이 때문에, 데이터를 저장하고 관리하는 데이터베이스를 두게 됨 (예시: mongoDB)
서버 개발에서 그래도 가장 많이 하는 일은
“새로운 정보”와 “기존의 정보”를 가지고
“정해진 로직”을 수행하는 일
HTTP MDN Reference Documentation: https://developer.mozilla.org/ko/docs/Web/HTTP
그림으로 쉽게 보는 HTTP의 변천사: https://brunch.co.kr/@swimjiy/39
웹 서버 (Web Server) VS 웹 어플리케이션 서버(WAS): https://brunch.co.kr/@springboot/21