2차 프로젝트에서 REST API를 개발할 때 Query String을 사용해야 할지 Path Variable을 사용해야 할지 고민이 생겼다. 지금까지는 두 가지를 구별해서 쓴다기보다 개발할 때 편한 것을 선택해서 섞어서 사용했던 것 같다. 그래서 오늘 Query String과 Path Variable은 언제 쓰는지에 대해 적으려고 한다.
/board?sort=like
? 뒤에 sort란 변수에 값을 담아 서버로 전달하는 방식이 Query String이다. board의 정렬 방식을 like(좋아요순)으로 하겠다는 의미다.
Flask에서는
@app.route('/board', methods=['GET'])
def show_board():
sort_type = request.args.get('sort')
...
이렇게 사용할 수 있는데 /board?sort=like에서 "like"는 sort_type 변수에 저장이 된다. 즉, sort_type 변수에 담기는 값에 따라 필터링할 때(예시) Query String 방식을 사용하는 것이 좋다.
/board/1
/board/{id}로 했다면 id에 1이 들어오는 요청을 받아 서버에서 처리를 하고 응답을 한다는 의미다.
Flask에서는
@app.route('/board/<id>', methods=['GET'])
def show_detail(id):
post = db.board.find_one({"id": int(id)})
...
이렇게 사용할 수 있는데 /board/🔥에서 🔥에 들어오는 값이 선언한 함수의 매개변수에 담긴다. 따라서 이 매개변수 값으로 원하는 로직을 구성하면 된다. 예를 들어 이 매개변수 값으로 db에서 조회해서 나온 결과를 이용해 개발할 수 있다. 어떤 자원(데이터)의 위치를 특정해서 보여줘야 할 경우 Path Variable 방식을 사용하는 것이 좋다.