簡體   English   中英

Python:在請求正文中發布鍵/值對

[英]python: post key/value pairs in request body

我有一個使用flask的現有python API,它在主體中提交發布請求,然后調用並執行另一個python腳本:

testingREST.py:

import testingdf 
import json 
from flask import Flask, json, request
app = Flask(__name__)


@app.route("/results", methods=['POST'])
def createResults():
  entry = request.get_json().get('entry', '')
  passcode = request.get_json().get('passcode', '')
  data = testingdf.test(entry, passcode)
  response = app.response_class(
      response=json.dumps(data),
      status=200,
      mimetype='application/json'
  )
  return response     

if __name__ == "__main__":
    app.run(debug = True, host='localhost', port=8080, passthrough_errors=False)

testingdf.py:

import pandas as pd



def test(entry, passcode):
    df = pd.DataFrame()
    testInput = zip(entry, passcode)
    for entry, passcode in testInput:
        df = df.append({'Entry': entry, 'Passcode': passcode}, ignore_index=True)
        results = {
            'Entry' : entry,
            'Outcome' : passcode,
                }
    return results

這是我在調用api時發布到請求正文中的內容

{
"entry":[21, 44, 31],
"passcode":["denied", "Try Again", "Retry"]
}

響應:

{
    "Entry": 35,
    "Outcome": "Success"
}

問題:在請求正文中,有一種方法可以讓我具有類似以下內容的請求正文:

{
"entryInfo":[(21, "denied"), (44, "Try Again"), (31, "Retry")]
}

基本上,因為我認為實現起來的方式很奇怪,因此很容易錯配,所以將它們成對傳遞。 另外,我不確定“鍵/值”是否是在此處使用的正確術語,但我希望這會有所幫助。

順便使用python3。

您的問題似乎歸結為要傳遞到燒瓶服務器的數據。 關於如何處理這些數據還有另一個問題(您只返回最后一個),但是您沒有對此提出疑問。

將其作為請求正文發送。 它使用有效的JSON列表符號。 然后,您的Flask服務器可以通過解碼JSON請求來訪問列表。

{"entryInfo": [[21, "denied"], [44, "Try Again"], [31, "Retry"]]}

不過,更好的方法可能是使用字典映射條目代碼來傳遞代碼:

{"entryInfo": {"21": "denied", "44": "Try Again", "31": "Retry"}}

是否需要最高級別的dict尚有爭議,您可以擺脫:

{"21": "denied", "44": "Try Again", "31": "Retry"}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM