Flask:了解POST方法传输数据

时间:2012-11-14 15:36:20

标签: python http post flask

我的问题很难描述,所以我将重点解释这种情况。所以假设我有两个不同的实体,可以在不同的机器上运行。我们先调用第一个 Manager ,然后调用第二个 Generator 。经理是唯一可以通过用户调用的经理。

管理器有一个名为getVM(scenario_Id)的方法,它将方案的ID作为参数,并从数据库中检索与作为参数给出的ID相对应的BLOB。这个BLOB实际上是一个我需要发送给Generator的XML结构。两者都有一个Flask运行。

在另一台机器上,我的生成器使用generateVM()方法,它将根据收到的XML结构创建一个VM。我们不会讨论如何从XML创建VM。

目前我做到了:

管理器

# This method will be called by the user
@app.route("/getVM/<int:scId>", methods=['GET']) 
def getVM(scId):
    xmlContent = db.getXML(scId)  # So here is what I want to send
    generatorAddr = sgAdd + "/generateVM"   # sgAdd is declared in the Initialize() [IP of the Generator]

    # Here how should I put my data ? 
    # How can I transmit xmlContent ? 

    testReturn = urlopen(generatorAddr).read()
    return json.dumps(testReturn) 

发电机

# This method will be called by the user
@app.route("/generateVM", methods=['POST']) 
def generateVM():
    # Retrieve the XML content...
    return "Whatever"

所以你可以看到,我坚持如何传输数据本身(XML结构),然后如何对待它...所以,如果你有任何策略,提示,提示,线索我应该如何继续,请随时回答。也许有些事情我对Flask并不是很了解,所以请随意纠正我所说的错误。

致以最诚挚的问候,谢谢

PS:带有路线的行被评论,因为它们搞乱了语法着色

1 个答案:

答案 0 :(得分:0)

除非我遗失了某些东西,否则你只能在邮寄请求的正文中传送它?那不是你的generateVM方法的设置方式吗?

@app.route("/getVM/<int:scId>", methods=['GET']) 
def getVM(scId):
    xmlContent = db.getXML(scId)  
    generatorAddr = sgAdd + "/generateVM"   

xml_str = some_method_to_generate_xml()
data_str = urllib.urlencode({'xml': xml_str})
urllib.urlopen(generatorAddr, data=data_str).read()
return json.dumps(testReturn) 

http://docs.python.org/2/library/urllib.html#urllib.urlopen

相关问题