Python

초간단 python 서버만들기2

크레이지제이 2019. 9. 25. 15:21
반응형
flask2

초간단 웹서버 만들기2

1편과 같은 코드를 좀 더 간단하게 줄일 수 있다.

annotation을 추가하면 좀 더 직관적으로 보기가 편하다.
사용 방법은 URL과 method를 연결할 함수 정의부 앞에 추가해 주면 된다.

다음은 간결해진 코드이다. (이번에는 로그 기능을 off하였다)

'''
test api server
'''

from flask import Flask, request
from flask_restful import Resource, Api
from flask.views import MethodView

import logging
import json,base64

import os, sys
import datetime
import threading, time

app = Flask(__name__)

# log = logging.basicConfig(filename='testsvr.log', level=logging.INFO)
# 로깅을 전부 끄기
log = logging.getLogger('werkzeug')
log.disabled = True
app.logger.disabled = True

'''
/apitest1
'''
@app.route('/apitest1', methods=['GET'])
def apitest1_get():
    data = request.args
    print('recv:', data)  # dictionary
    abc = data.get('abc')
    if abc :
        result = 'This is GET method!'+str(abc)
    else:
        result = 'Hello World! input abc'
    return result

@app.route('/apitest1', methods=['POST'])
def apitest1_post():
    # get과 동일하게 작동
    return apitest1_get()


'''
/sum
'''
@app.route('/sum', methods=['GET'])
def sum_get():
    data = request.args
    print('recv:', data)  # dictionary
    return 'Hello.'

@app.route('/sum', methods=['POST'])
def sum_post():
    logging.info('sum test')
    # print('request.data=', request.data)  # binary data read all
    data=request.get_json(force=True) # parse json string
    print('request.json=', data)
    a = data['a']
    b = data['b']
    now = datetime.datetime.now()
    print(now)
    timestr = now.strftime('%Y%m%d %H:%M:%S')
    result = {
        'sum':int(a+b),
        'time':timestr
    }
    logging.info('result='+json.dumps(result))
    return result

port = 18899
if __name__=='__main__':
    print('Start Server... port=', port)
    logging.info('start server')
    app.run(host='0.0.0.0', port=port, debug=False)
    # 디버그 모드로 하면 소스 수정시 자동으로 서버 재시작이 된다.


Written with StackEdit.