我需要将数据提供给API,该API可以从系统创建或删除用户。有效负载的语法如下:
b.User.create([{'user': {'name': 'kylie','full_name': 'kylie'},
'password': {'is_encrypted': True, 'password': 'letmein'},
'perms': [{'partition': '/Common', 'role': 'USER_ROLE_GUEST'}],
'login_shell': '/sbin/nologin'}])
b.User.delete(['ron'])
很明显,创建用户有效负载是一个字典列表,而字典又由字典组成。删除有效负载只是一个简单的名称列表。
我的示例输入数据是一个列表列表,如下所示:
[['NEW','kylie','OPERATOR','/sbin/nologin'],['DELETE', 'ron', 'ADMINISTRATOR', '/sbin/bash'],['NEW','jessie','GUEST','sbin/nologin']]
需要注意的一些要点:
NEW表示要创建的用户,DELETE表示要删除的用户
密码已加密布尔值,密码和分区值始终是固定的,无需从输入中获取,与示例中的相同。
迭代输入数据以创建此有效负载的最佳方法是什么?
答案 0 :(得分:1)
只需迭代输入数据,就像这样
data = [['NEW', 'kylie', 'OPERATOR', '/sbin/nologin'],
['DELETE', 'ron', 'ADMINISTRATOR', '/sbin/bash'],
['NEW', 'jessie', 'GUEST', 'sbin/nologin']]
for record in data:
if record[0] == 'NEW':
b.USER.create([get_user_object(*record[1:])])
else:
b.USER.delete([record[1]])
你可以实现get_user_object
,就像这样
def get_user_object(name, role, shell):
return {
'user': {
'name': name,
'full_name': name
},
'password': {
'is_encrypted': True,
'password': 'letmein'
},
'perms': [{
'partition': '/Common',
'role': role
}],
'login_shell': shell
}