在原有注册基础上增加对密码的哈希,以及在注册是绑定一个病例,分配stageid。
逻辑分析:
-
路由和请求处理:
- 使用 Flask 框架创建了一个路由
/registerf
,通过 POST 方法处理注册请求。 - 使用
request.form.get()
方法获取表单中提交的用户名、密码、角色和电子邮件地址。
- 使用 Flask 框架创建了一个路由
-
用户名重复检查:
- 使用 SQLAlchemy 查询数据库,检查用户名是否已存在。如果存在重复的用户名,返回一个包含错误消息的 JSON 响应。
-
用户添加和提交:
- 如果用户名不存在重复,则调用
stage()
函数生成一个阶段ID(Stage ID),并创建一个新的用户对象models.User
。 - 将新用户对象添加到数据库会话中(
db.session.add(user)
),然后提交数据库事务(db.session.commit()
)保存新用户记录。
- 如果用户名不存在重复,则调用
-
阶段ID生成(
stage()
函数):stage()
函数中首先调用newlist()
函数生成一个医疗记录ID(Medical Record ID)。- 使用生成的医疗记录ID向远程API发出请求,获取医疗记录的详细信息。
- 从API响应中提取阶段列表(Stage List),并返回第一个阶段的ID作为生成的阶段ID。
-
API请求函数(
newlist()
函数):newlist()
函数负责向指定的远程API发送POST请求,用于创建一个新的医疗记录。 -
异常处理:
使用try-except
块来捕获可能发生的请求异常,例如网络问题或API服务器响应错误。在发生异常时,会打印出错信息到控制台,并继续执行后续操作或返回适当的错误响应。
@app.route('/registerf', methods=['POST'])
def registerf():
username1 = request.form.get('username', type=str)
password1 = request.form.get('password', type=str)
role1 = request.form.get('role', type=str)
email1 = request.form.get('email', type=str)
ifuser = models.User.query.filter_by(username=username1).first()
if ifuser:
# 如果存在,则返回用户名重复的消息
res = {
'code': 200,
'msg': "用户名重复!"}
else:
stageid1 = stage()
user = models.User(username=username1, password=password1, role=role1, email=email1, stageid=stageid1)
db.session.add(user)
db.session.commit()
res = {
'code': 0,
'msg': "添加成功"
}
return make_response(res)
def stage():
print(1111)
medicalid = newlist()
print(medicalid)
json_url = ''
token = tokens
data2 = {
}
headers1 = {
'Authorization': token}
try:
response = requests.post(json_url, json=data2, headers=headers1)
if response.status_code == 200:
jsonlist = response.json()
print(jsonlist)
datalist = jsonlist["data"]
stagelist = datalist["stageList"]
stageId = stagelist[0]["id"]
print(stageId)
return stageId
except requests.exceptions.RequestException as e:
print('请求出错:', e)
def newlist():
json_url = '' # API的URL
token = tokens
# 要发送的数据
data = {
}
headers1 = {
'Authorization': token}
# 发送POST请求
try:
response = requests.post(json_url, json=data, headers=headers1)
if response.status_code == 200:
# 打印响应内容
jsonlist = response.json()
stageId = jsonlist["data"]
return stageId
except requests.exceptions.RequestException as e:
print('请求出错:', e)