티스토리 뷰

동기

STAC 대회에 내보낼 프로젝트의 API 서버를 짜려고 flask를 배우던 중에 Route의 HTTP CRUD 처리가 가독성이 좋지 않아보였고 파이썬에는 Switch가 없어서 나만의 방식으로 바꿔보기로 함

구현

'Python Switch'를 구글링 해보던 중에 dict로 Switch를 비슷하게 구현할 수 있다는 걸 발견, 이거다! 하고 이용함

내눈에는 가독성이 더 좋아보이게 됐는데 사람마다 달라보일 수도 있음

소스

기존 코드 (if, elif 문 사용)

@app.route('/user', methods=['GET', 'POST'])
def user():
    if request.method == 'POST':
        return 'post', status.HTTP_201_CREATED
    elif request.method == 'GET':
        return 'get', status.HTTP_200_OK

바뀐 코드 (dict와 function 사용)

@app.route('/user', methods=['GET', 'POST'])
def user():
    def create_user():
        return 'post', status.HTTP_201_CREATED

    def get_user():
        return 'get', status.HTTP_200_OK

    response = {
        'GET': get_user,
        'POST': create_user
    }

    return response.get(request.method)()
    # or return {'GET': get_user, 'POST': create_user}.get(request.method)()


'Programming > Python' 카테고리의 다른 글

[Python/flask] Restful API 서버 뼈대  (0) 2017.01.17
[Python/flask] Query 질의문 생성 헬퍼  (0) 2016.07.28
댓글 댓글펼치기