如何在Python网络服务中分配唯一ID属性(使用Flask)
我有一个用Python写的网络服务,当收到POST请求时,它会创建一个新的条目,并给它分配一个新的ID,代码如下:
@app.route('/api/entries', methods = ['POST'])
def create_entry():
if not request.json:
abort(400)
entry = {
'id': entries[-1]['id'] + 1,
'Name': request.json.get('Name', ""),
'Surname': request.json.get('Surname', ""),
'PhoneNb': request.json.get('PhoneNb', "")
}
entries.append(entry)
return jsonify( { 'entry': entry } ), 201
不过,我在这段代码中遇到的问题是,如果条目数组是空的,
entries[-1]['id']
就无法进行评估,结果会返回错误:
IndexError: list index out of range
我该怎么解决这个问题呢?
1 个回答
1
使用异常处理器来捕捉 IndexError
,并设置一个默认的 id:
try:
entry_id = entries[-1]['id'] + 1
except IndexError:
entry_id = 1
entry = {
'id': entry_id,
'Name': request.json.get('Name', ""),
'Surname': request.json.get('Surname', ""),
'PhoneNb': request.json.get('PhoneNb', "")
}
entries.append(entry)
在这里使用 try
/except
比检查 entries
的长度要好,因为你只会遇到这个问题 一次,毕竟。
要知道,你的代码不是线程安全的,也不能在多进程的 WSGI 容器中运行。