Flask, Curl and Chrome Dev Tools

rang-dev·2020년 3월 17일
0

Intro to Flask

API server를 만들기 위해 Flask를 사용할 것이다. Flask는 microframework로 core functionality는 단순하게 유지하되 수많은 extensions과 개발자들이
다른 functionality(i.e. authentication, database support..)를 추가하는 것을 허용한다.

Creating a Baisc Flask Application

Directory & Virtualenv Set Up

  1. 커맨드창에서 mkdir [proejct_name]으로 폴더를 만들어 준 후 해당 폴더로 이동한다.
  2. pip3 install flask로 flask를 설치한다.
  3. flaskr 폴더를 만들고 그 안에 __init__.py를 생성한다.

Create_app

from flask import Flask, jsonify

def create_app(test_config=None):
  app = Flask(__name__)    #1
  
  @app.route('/')  #2
  def hello():  #3
    return jsonify({'message': 'Hello, World!'})  #4
  
  return app
  • #1. __name__은 application이 어떤 디렉토리에 저장된 지 알 수 있도록 알려주는 역할을 한다. 그렇기때문에 추가적인 configuration이나
    찾고있는 relative paths가 어디로 가야할지 알 수 있다.
  • #2. 파라메터로 우리가 이동할 path를 가진다.
    • @app.route는 GET request에 응답하는 것이 기본 설정이다.
  • #3. route를 handle할 메소드를 선언한다.
    • 중복된 route decorator나 route handler는 발생할 수 없다.
  • #4.메세지를 포함한 객체를 보내기위해 jsonify()를 사용한다.
    • jsonify()를 해주지 않고 딕셔너리를 그대로 return한다면 TypeError가 발생한다.

Run your appliction

  • 윈도우 환경
set FLASK_APP=flaskr  #1
set FLASK_ENV=development  #2
flask run

띄어쓰기 주의

  • #1. app이 application을 어디서 찾아야할지 알려준다. 1번을 실행하면 flaskr폴더 안에 init.py파일이 있는 것을 알게 된다.
  • #2. Development mode로, 변경이 발생할 때마다 server를 자동으로 재실행해주기 때문에 개발 시간을 줄일 수 있다.
    처음에만 1, 2번을 실행해주면 된다.

Basic Flask Set Up

Flask Project Directory

project_directory

Configuration

큰 프로젝트에서는 development 환경, production 환경, testing 환경 등을 위한 복잡한 configuration들을 가진다. Flask는 이것을 더 간단하게 만들어줄 수 있다.

def create_app(test_config=None):
  # create and configure the app
  app = Flask(__name__, instance_relative_config=True)  #1
  app.config.from_mapping(  #2
    SECRET_KEY='dev',
    DATABASE=os.path.join(app.instance_path, 'flaskr.splite'),
  }
  if test_config is None:  #3
    # load the instance config, if it exists, when not testing
    app.config.from_pyfile('config.py', silent=True)  #4
  • #1. 추가된 파라메터: 같은 프로젝트 디렉터리 내에 configuration들이 존재하는 것을 말한다.
  • #2. app 오브젝트의 config를 from_mapping으로 수정할 수 있다.
  • #3. testing mode인지 아닌지를 확인한다.
  • #4. 주어진 파일에서 config를 불러온다.

communication


Chrome Dev Tools

요청이 어떻게 전송되고 있는지, 브라우저에서의 응답이 무엇인지 확인하기위해 Chrome Dev Tools를 사용할 수 있다. 그 안에는 수많은 도구가 있지만 사용할 핵심 영역은 네트워크 탭이다.

네트워크 탭에 액세스하려면 개발자 도구(Cmd + Shift + C 또는 햄버거 메뉴 → More Tools(도구 더보기) → Developer Tools(개발자도구))를 열고 네트워크 탭을 선택한다. 개발자 도구를 연 후 발생한 모든 요청들이 이 탭에 나타난다. 웹사이트가 어떻게 작동하고 있는지 훑어볼 수 있다.

dev1
dev2

Curl

Curl은 URL을 사용하여 데이터의 IP 전송을 완료하는 라이브러리 및 Commnad line tool이다. API를 테스트하기 위한 빠른 방법은 API서버가 실행되는동안
다른 터미널 창에서 curl command를 실행하는 것이다.

Curl Syntax

curl -X POST http://www.example.com/tasks/
모든 request는 curl과 URL을 포함하고 있어야한다. 그 외의 부분은 request를 만드는데 사용할 수 있는 옵션들을 나타낸다.

OptionLong formExampleDescription
-X--request COMMANDcurl -X POST http://www.example.comrequest 메소드나 커맨드를 명시
-d--data DATAcurl -d '{"name":"Bob"}' http://www.example.com백엔드에 필요한 데이터를 전송
-F--form CONTENTcurl -X POST -F "name=user" http://www.example.comform을 submit 해야할때
-u--user
USER[:PASSWORD]
curl --user bob:secret http://www.example.comtest user와 password로 테스트할때
-H--header LINEcurl -H "Content-Type: application/json" http://www.example.comrequest에 넣고 싶은 header를 포함시킴
profile
지금 있는 곳에서, 내가 가진 것으로, 할 수 있는 일을 하기 🐢

0개의 댓글