当前位置: 首页 > 面试题库 >

带有POST的flask示例

吴均
2023-03-14
问题内容

假设以下路由访问xml文件,以给定的xpath(?key =)替换特定标签的文本:

@app.route('/resource', methods = ['POST'])
def update_text():
    # CODE

然后,我将使用cURL这样:

curl -X POST http://ip:5000/resource?key=listOfUsers/user1 -d "John"

xpath扩展listOfUsers/user1应该访问标记<user1>以将其当前文本更改为“ John”。

我不知道如何实现这一目标,因为我才刚刚开始学习Flask和REST,在这种情况下我找不到很好的例子。另外,我想使用lxml来操纵xml文件,因为我已经知道了。

有人可以提供帮助并提供示例指导我吗?


问题答案:

在实际回答你的问题之前:

URL key=listOfUsers/user1中的GET参数(例如)是参数,你不应将其用于POST请求。关于GET和POST之间的区别的快速说明可以在这里找到。

就你而言,要利用REST原理,你可能应该具有:

http://ip:5000/users
http://ip:5000/users/<user_id>

然后,在每个网址,你可以定义不同的HTTP方法的行为(GET,POST,PUT,DELETE)。例如,在上/users/ ,你需要以下内容:

GET /users/<user_id> - return the information for <user_id>
POST /users/<user_id> - modify/update the information for <user_id> by providing the data
PUT - I will omit this for now as it is similar enough to `POST` at this level of depth
DELETE /users/<user_id> - delete user with ID <user_id> 

所以,在你的榜样,你想要做一个POST/users/user_1与POST数据是"John"。然后,应该向用户隐藏XPath表达式或你要访问数据的任何其他方式,并且不要与URL紧密耦合。这样,如果你决定更改存储和访问数据的方式,而不是更改所有URL,则只需更改服务器端的代码即可。

现在,你的问题的答案:下面是基本的半伪代码,说明如何实现我上面提到的内容:

from flask import Flask
from flask import request

app = Flask(__name__)

@app.route('/users/<user_id>', methods = ['GET', 'POST', 'DELETE'])
def user(user_id):
    if request.method == 'GET':
        """return the information for <user_id>"""
        .
        .
        .
    if request.method == 'POST':
        """modify/update the information for <user_id>"""
        # you can use <user_id>, which is a str but could
        # changed to be int or whatever you want, along
        # with your lxml knowledge to make the required
        # changes
        data = request.form # a multidict containing POST data
        .
        .
        .
    if request.method == 'DELETE':
        """delete user with ID <user_id>"""
        .
        .
        .
    else:
        # POST Error 405 Method Not Allowed
        .
        .
        .

还有很多其他事情需要考虑,例如POST请求内容类型,但我认为到目前为止我所说的应该是一个合理的起点。我知道我没有直接回答你所问的确切问题,但希望对你有所帮助。我稍后也会进行一些编辑/添加。



 类似资料:
  • 问题内容: 我正在尝试将数据从表单发送到数据库。这是我使用的表格: 典型的方法是提交表单,但这会导致浏览器重定向。使用jQuery和Ajax,是否可以捕获表单的所有数据并将其提交给PHP脚本(例如 form.php )? 问题答案: 的基本用法如下所示: HTML: jQuery的: 注:由于jQuery的1.8,并支持已被弃用,并且。 注意:请记住,上面的代码段必须在DOM准备就绪后完成,因此您

  • 问题内容: 我有几个要用于我的flask瓶应用程序的模板。 我尝试了以下内容,但似乎只直接在/ templates内部查看,而不是/ templates / folder1,templates / folder2等。 两者均无法正常工作,我如何指定不同模板的子文件夹。 问题答案: 可以在创建Flask应用程序(或蓝图)时指定template文件夹: 资料来源:http : //flask.poco

  • 问题内容: 我有一个客户端服务器应用程序。我设法使他们使用SSl加密通过https连接 现在,我想同时使用http和https运行服务器。有什么可行的方法吗? 问题答案: 第一件事:不要使用flask中内置的Web服务器进行繁重的工作。您应该使用真实的Web服务器,例如apache(mod_wsgi)nginex + gunicore等。这些服务器包含有关如何同时运行http和https的文档

  • 问题内容: 我想使用WebClient类将文件上传到主机。我还想传递一些应该在服务器部分(PHP)的$ _POST数组中显示的值。我想一口气做 我用过下面的代码 如果我使用QueryString属性,则$ _GET数组中显示的值。但我想通过post方法发送它 问题答案: 没有内置功能可让您执行此操作。我已经在博客中发布了可以使用的扩展程序。以下是相关的类: 现在您可以在应用程序中使用它: 现在,在

  • 问题内容: 我尝试构建一个python脚本,该脚本发送带有用于提取结果的参数的POST。通过提琴手,我提取了我要返回的帖子请求。该网站仅使用https。 现在我的python脚本: 但是当我运行脚本时,出现以下错误: 问题答案: 非常感谢您链接到请求模块。太完美了。下面解决我的问题。

  • 本文向大家介绍带有babel的webpack.config.js的示例,包括了带有babel的webpack.config.js的示例的使用技巧和注意事项,需要的朋友参考一下 示例 依存关系 webpack.config.js