웹페이지 틀을 구성하는 프론트 엔드
페이지에 대한 데이터를 Logic에 맞게 넣어주는 백엔드 및 데이터베이스 등
=> REST API를 사용해서 이러한 컴퓨터들 사이에서 http 데이터 요청을 해서 응답 데이터를 화면에 출력시키는 구조다.
Flask
플라스크는 파이썬으로 작성된 마이크로 웹 프레임워크
웹 애플리케이션을 구축하는 데 필요한 핵심 기능을 제공하는 데 중점을 둔 단순하고 미니멀한 디자인
특정 도구나 라이브러리를 강요하지 않는다는 점에서 '마이크로'라는 원칙을 따른다.
나머지 기능은 자신이 원하는 다른 라이브러리나 프레임워크를 확장해 사용
__name__?
파이썬에서 디폴트로 있는 해당 변수는 모듈로서 실행될 때 모듈(라이브러리)의 이름이 저장된다. (abc.py이면 abc)
모듈이 아닌 실행되는 코드에서는 __main__ 값이 들어간다.
코드를 실행할 때는 __name__== __main__ 이 된다.
/*
VS code Extensions에서 Python 설치하고 오류발생 시 python 직접 설치한다. (PATH)
python -m venv 가상환경이름
=>가상환경 폴더 안에 들어가 Scripts에서 activate.bat 실행한다
pip intstall flask
상위 폴더로 올라가서 venv 전 위치의 폴더에서 가상환경 내에서 flask를 설치해준다.
*/
from flask import Flask
app = Flask(__name__)
@app.route("/hello")
def test():
return "<h2>hello World.</h2>"
if __name__=="__main__":
app.run(port="5000", debug=True)
flask 라이브러리 안의 여러 클래스들 중에 핵심적인 기능인 Flask 클래스만 import한다는 의미이다.
Flask 클래스로 app이라는 객체를 만들고 웹서비스의 기능을 넣어서 추가하는 형태로 구현한다.
파라미터를 제외한 URL에 라우팅될 경로('/'로 시작)를 적어주면 된다.
run이라는 함수에는 웹주소, 포트, debug(에러를 볼 것인가) 같은 인자가 있다.
=> cmd 터미널에서 실행시켜주면 된다.
/hello 경로에 라우팅된 것을 확인할 수 있다.
/*
이렇게 어떠한 경로에 라우팅된 것이 endpoint이다. 이것은 해당 api를 호출할때의 URL이다.
*/
기존에 만들었던 채팅레이아웃에서 send 버튼을 누르면 localhost:5000/hello 에다 요청하고 응답값이 잘 나오는지 console.log 로 확인해보겠다.
const SendMessage = () => {
setMessages([...messages, { text: input, sender: "user" }]);
axios.get("http://localhost:5000/hello").then(function (result) {
console.log(result.data);
});
setInput("");
};
npm install axios 를 통해서 axios를 설치하고 해당 url에 http get 요청을 보내봤다.
CORS 정책에 의해서 차단된 것을 확인할 수 있었다.
자원을 제공하는 localhost:5000/hello 에서 access-control-allow-origin에
위의 send 버튼을 눌러 요청했던 http://localhost:3000/chat 이 없어서 접근이 허용되지 않았던 것 같았다.
from flask import Flask
from flask_cors import CORS
app = Flask(__name__)
CORS(app) # 모든 경로에 대해 CORS 허용
@app.route('/hello')
def hello():
return "hello, World."
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000, debug=True)
해당 문제를 해결하기 위해
pip install flask-cors를 통해서 flask-cors를 설치하고
Flask 서버에서 어플리케이션 전체(모든 경로)에 대해서 CORS를 허용시켜 차단되지 않도록 하였다.
제대로 hello World. 가 찍히는 것을 확인할 수 있었다.
deactivate 를 통해서 가상환경 venv에서 나올 수 있다.
'프로그래밍 기초 > portfolio project' 카테고리의 다른 글
NGINX 와 서브도메인 연결 (0) | 2024.10.02 |
---|---|
OpenAI Assistant API 및 응답 (0) | 2024.09.08 |
GET,POST 그리고 Content-type / Postman (0) | 2024.09.04 |