미니터가 제공하는 핵심 기능들
사용자에게 이름, 이메일, 비밀번호 등의 기본적인 회원 정보를 HTTP 요청을 통해 받은 후 시스템상에 저장한다.
필요한 정보들
다음은 회원가입 기능을 구현하는 엔드포인트이다.
from flask import Flask, jsonify, request
app = Flask(__name__)
app.users = {}
app.id_count = 1
@app.route("/sign-up", methods=['POST'])
def sign_up():
new_user = request.json
new_user["id"] = app.id_count
app.users[app.id_count] = new_user
app.id_count = app.id_count + 1
return jsonify(new_user)
from flask import Flask, jsonify, requestapp.users = {}app.id_count = 1@app.route("/sign-up", methods=['POST'])new_user = request.jsonnew_user["id"] = app.id_countapp.users[app.id_count] = new_userapp.id_count = app.id_count + 1return jsonify(new_user)📌 3번에서의 id 값을 증가시키는 방식은 문제가 있을 수 있다.
만일 HTTP 요청들이 동시에 전송될 경우 id 값이 잘못 지정될 가능성이 있다.
이러한 문제를 예방하기 위해서 atomic increment operation을 사용해야 한다.
하지만 추후에 데이터베이스에 데이터를 저장할 것이고, id 값은 데이터베이스에서 자동 생성을 해준다.
*atomic increment operation
: 여러 스레드(thread)가 동시에 값을 증가시킬 수 없고, 한 번에 한 스레드만 값을 증가시키는 것
이전 게시글에서 만들었던 app.py 파일에서 "/ping" 엔드포인트 아래에 회원가입 엔드포인트를 다음과 같이 추가한다.
from flask import Flask, jsonify, request
app = Flask(__name__)
app.id_count = 1
app.users = {}
@app.route("/ping", methods=['GET'])
def ping():
return "pong"
@app.route("/sign-up", methods=['POST'])
def sign_up():
new_user = request.json
new_user["id"] = app.id_count
app.users[app.id_count] = new_user
app.id_count = app.id_count + 1
return jsonify(new_user)
터미널을 열고 app.py 가 위치한 디렉토리로 이동하여 아래의 명령을 입력해보자.

이제 실제로 회원가입 요청을 보내 보자.
앞서 했던 것처럼 httpie를 사용하여 터미널에서 회원가입 HTTP 요청을 보내 보자.

📌️ httpie를 사용해서 POST로 JSON 데이터를 보내는 것은 아주 간단하다.
HTTP 요청을 보내는 엔드포인트 주소 다음에 field=value의 형태로 보내면 된다.
깔끔한 파이썬 탄탄한 백엔드 / 저자: 송은우