如何使用curl将唯一值发布到多个词典

时间:2016-02-23 14:47:54

标签: python rest dictionary curl flask

我正在用Flask编写一个REST API,它应该创建一个词典词典,例如

Dictionary = {
        dict1 = {},
        dict2 = {}
        }

我希望每个字典都能填充个别值,如果可能的话,我想在一个请求中填写两个字典。

到目前为止,我一直在使用curl请求测试我的代码,似乎它几乎就在那里......除了两个dicts都填充了相同的值集合。

api.py

dictionary = {}

@app.route('/launch', methods=['POST'])
def launch():
    gw_type = request.json['type']

    for t in gw_type:
        dictionary[t] = {
            'client': request.json['client']
            'band': request.json['band']
            'password': request.json['password']

    return jsonify(**dictionary)

卷曲请求

curl -H "Content-Type: application/json" -X 
POST -d '{"type":["type1", "type2"], "client":["test1", "test2"], 
"bands":["ABCD", "ABC"], "password":["pass", "pass2"]}' 
http://localhost:5000/launch

输出

{
  "type1": {
    "bands": [
      "ABCD",
      "ABC"
  ],
  "client": [
    "test1",
    "test2"
  ],
  "password": [
    "pass",
    "pass2"
  ]
},
"type2": {
  "bands": [
    "ABCD",
    "ABC"
  ],
  "client": [
    "test1",
    "test2"
  ],
  "password": [
    "pass",
    "pass2"
  ]
 }
}

如果有可能,我将如何创建多个词典('type'),以便每个TYPE在一个curl请求中为'client','band'和'password'提供它自己的唯一值?< / p>

由于

1 个答案:

答案 0 :(得分:1)

因此,您每次都会访问client bandspassword的完整列表。如果按照您希望的方式在curl命令中对它们进行排序,那么您需要做的就是修改代码以使用索引来获取正确的值:

@app.route('/launch', methods=['POST'])
def launch():
    gw_type = request.json['type']

    for i in range(len(gw_type)):
        dictionary[gw_type[i]] = {
            'client': request.json['client'][i]
            'band': request.json['band'][i]
            'password': request.json['password'][i]

    return jsonify(**dictionary)

这将获得第一个类型的第一个客户端,第一个类型的第一个带,第二个类型的第二个客户端等。