云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

金山云_恢复mysql数据库_超低折扣

小七 141 0

在本博客中,我将详细介绍如何从XSA上的Python应用程序编写和修改HANA数据库上的数据。我将使用本博客第1部分中相同的pyapp项目。你可以在这个链接上找到它的代码。在第1部分中,我还详细介绍了如何在XSA项目中开发本地数据库模块,并使用HTTPGET请求从中查询数据。

发布数据

使用GET请求读取数据,通常非常简单,如第1部分所示。但是,当涉及到更改数据库中的项时,事情会变得更有趣一些。您必须发送更复杂的HTTP请求(POST、PUT或DELETE),并附上适当的授权凭证和有效的跨站点请求伪造(CSRF)令牌。这是为了确保确实是您在对数据库进行更改,并且您确实打算进行这些更改。如果您不熟悉CSRF,请点击此链接了解更多信息。

在本节中,我将演示如何在XSA应用程序中发送和处理POST请求,以便将新产品添加到数据库中。通常,您需要创建一个HTML表单(在applicationrouter模块中),该表单可以从用户那里获取产品详细信息,并在POST请求中将它们与CSRF令牌和授权信息一起传输到Python应用程序。Python应用程序可以调用一个存储过程,使用接收到的信息作为输入参数将产品插入数据库。

您也可以从Python应用程序内部或通过Postman或curl(特别用于测试api)等外部工具发送POST请求,但要使其正常工作,您需要在获取授权信息和处理CSRF令牌方面做更多的工作。我将在另一个博客中详细介绍这一点。现在,让我们保持简单,使用应用程序路由器获取CSRF令牌并将其附加到POST请求。

请注意,如果需要,CSRF保护可以在开发过程中关闭。对于xs中的各个应用程序,云主机,可以将"csrfProtection"指定为false-应用程序.json文件位于应用程序路由器目录中。我将继续在这个博客的保护,但如果你愿意,你可以选择关闭它!

首先,让我们在应用程序路由器中设置HTML页面,从用户那里检索产品信息。导航到pyapp>approuter>resources并创建一个名为addproduct的新目录。在此目录中,创建一个名为添加产品.html并将下面的代码粘贴到其中。这段代码只是创建一个HTML表单来获取有关产品的一些信息,并在单击submit按钮时调用一个名为callAddFunc()的函数。

现在,让我们编写callAddFunc()程序,返利机器人,它准备并向Python应用程序发送POST请求,让它将提供的产品添加到数据库中。在当前目录中创建一个名为添加产品.js. 并将下面显示的callAddFunc()的代码粘贴到其中。此代码读取用户输入,将其写入JSON对象并在POST请求中转发。

到目前为止,您已经创建了一个表单,从用户处获取输入并将其发送到Python应用程序。光靠这一点是不够的。如前所述,您需要在POST请求中附加一个CSRF令牌和授权信息,才能被接受。应用程序路由器已经负责授权部分,但是您必须自己编程获取和附加CSRF令牌。更好的方法是将其编程到$.ajaxSetup()函数中,这样每个POST请求(使用AJAX发送)都会自动调用该函数以获取CSRF令牌并将其合并到请求头中。

让我们继续吧!在resources目录中创建一个名为common的新目录。在此目录中创建一个名为csrf.js公司. 在这个文件中,复制以下代码,检查传出请求中是否需要CSRF令牌,如果需要,服务器云平台,则检索令牌并将其添加到请求头中。

现在您只需连接csrf.js公司以及添加产品.js文件到添加产品.html文件,以便它们都可以通过HTML表单访问。打开添加产品.html文件并在body标签中插入以下行。

从应用程序路由器端开始,您所要做的就是这样,这意味着您已经完成了POST API设置的一半以上!呜呜呜呜!让我们完成后端Python组件。

您只需修改Python应用程序就可以处理添加新产品的POST请求。在服务器.py文件中,添加以下代码,该代码从传入的POST请求中读取输入数据,对其进行解析以提取所需的输入参数,并调用数据库中的存储过程将产品添加到产品。产品桌子

就这样!祝贺您,您终于将应用程序设置为接收用户关于产品的输入并将其添加到数据库中!在命令提示符下使用xspush构建并运行pyapp项目。打开web应用程序的URL并替换"/索引.html"with"添加产品/添加产品.html". 输出应如下所示。

用您选择的值填写表格,然后单击提交。如果输入的值有效,则输出应更改为"Productinserted successfully"。您甚至可以通过打开数据库资源管理器并检查数据库中的数据来确认产品是否已实际添加到数据库中产品。产品表