Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何创建可以从Python调用的JavaScript API?_Javascript_Java_Python_Node.js_Api - Fatal编程技术网

如何创建可以从Python调用的JavaScript API?

如何创建可以从Python调用的JavaScript API?,javascript,java,python,node.js,api,Javascript,Java,Python,Node.js,Api,我使用Node.js用JavaScript编写了一个程序(目前更像是一个网站)。你可以在这里找到它: 我对一些与JavaScript有关的事情有点困惑,我也想知道如何从python文件运行包含JavaScript API的函数 首先是一些背景。 该程序的目的是使用WikipediaAPI下载特定页面上的所有图像、它们各自的描述,然后下载主体页面。它为我桌面上的每个页面创建一个新文件,以该页面命名,所有文件都放在那里 到目前为止,处理从Wikipedia获取所有数据的Wiki.js文件是在和ind

我使用Node.js用JavaScript编写了一个程序(目前更像是一个网站)。你可以在这里找到它:

我对一些与JavaScript有关的事情有点困惑,我也想知道如何从python文件运行包含JavaScript API的函数

首先是一些背景。 该程序的目的是使用WikipediaAPI下载特定页面上的所有图像、它们各自的描述,然后下载主体页面。它为我桌面上的每个页面创建一个新文件,以该页面命名,所有文件都放在那里

到目前为止,处理从Wikipedia获取所有数据的Wiki.js文件是在和index.ejs(类似于和html)的服务器上运行的。节点运行启动服务器的app.js。您转到并键入所需Wikipedia页面的名称,它会将该名称发送到Wiki.js,Wiki.js收集图像URL和文本字符串,并将它们发送到wikiController.js,wikiController.js不在服务器上托管,它负责创建具有页面名称的文件夹,并将图像和文本文件下载到其中

我的问题。
  • 我的第一个问题是Wiki.js是否必须托管在服务器上。我相信是的,只是好奇而已

  • 假设是这样,并且我将其托管在服务器上,那么我需要什么,以便python脚本可以从我的计算机调用它(发送页面名称)并接收数据?基本上,我想将Wiki.js包装在一个可以由python脚本调用的API中

  • 接下来,我不想使用Node.js下载任何东西。这个问题对我来说是最让人困惑的,因为即使我为wikiController.js编写了所有的代码,我也不知道它在客户端或服务器上的运行位置?我的理解是:

    一) 节点运行app.js

    二) 然后在app.js中,我会:

  • 它运行wikiController.js并发送某种var/object(app),以便在wikiController.js中使用它

    三) 然后我们开始托管服务器:

        app.listen(3000, function() {
            console.log('we be listening to da port of 3000');
        });
    
    但是“wikiController(app);”首先发生,那么wikiController.js是否只是编辑“app”对象/不管它是什么,以便在下一行服务器启动时,它知道pare的html(ejs)是什么,以及如何处理所有请求

    这又回到了我的第一个问题,因为我认为“Java创建了在虚拟机或浏览器中运行的应用程序,而JavaScript代码仅在浏览器上运行。”node允许我在计算机上运行JavaScript吗?我很困惑

  • 如果我把API放在GitHub上,它就可以工作了,对吗?感觉这是个愚蠢的问题,但我只是想确定一下

  • 我可以使用.py或.java运行app.js并本地托管服务器吗(假设我已经重新编码app.js以不使用节点)

  • 我多么希望它工作。 1) 我可能从GitHub托管服务器

    2) py调用thing2(python或java或JavaScript,我不在乎),并向thing2发送两个字符串(“页面标题”,“文件目录位置”)

    3) thing2将“页面标题”发送到GitHub上的服务器/API

    4) GitHub服务器将完成它在Wiki.js中已经做过的所有事情,但它不会在每个函数中执行第二次POST请求(如上文所示的第145-151、159-166行),而是将API的“成功:”字段中的数据(图像和文本字符串)发送回下载它的thing2


    非常感谢您提前提供的任何帮助

    好的,让我们一点一点地看,大致按照您要求的顺序,但在某些地方有所偏差

    这里有很多问题。首先也是最重要的一点是,您并不真正了解Node.js是什么或它的功能。正如您所建议的,Node.js是JavaScript的服务器端实现——换句话说,它允许您在服务器上运行JavaScript,完全独立于web浏览器(在本例中,服务器是
    localhost
    )。在尝试实现类似的东西之前,我真的建议您回去学习您正在使用的框架的基础知识

    如果
    Wiki.js
    正在与Node.js服务器交互,则是的,您需要在服务器上进行交互。因为我不知道
    Wiki.js
    所包含的细节,所以很难比这更具体。同样,回到Node.js的基础知识可能会有所帮助

    wikiController
    在您的服务器上运行,您在您的服务器
    app.js
    中调用它就证明了这一点。调用
    wikiController(app)
    会“编辑”
    应用程序
    对象,一旦您开始监听连接,可能会扩展其功能

    GitHub不是服务器主机。GitHub页面是静态HTML,因此无法在其上运行API。我建议您看看,这将允许您托管一个Node.js服务器来测试您的API。它是免费的,有一些限制,但它们可能不会影响您的测试。它还与GitHub集成,因此您可以将更改提交到GitHub存储库,并在web服务器上自动更新这些更改

    为了“使用.py或.java运行app.js”,如果您在本地运行Node.js应用程序,则需要使用Python或java向
    localhost
    发出web请求,或者如果您选择在web上托管它,则需要通过公共web URL发出web请求


    在我看来,您在这里遇到的大多数问题都是由于缺乏Node.js、JavaScript和API的基本知识。这不是一件坏事,但我建议您先找一个关于创建简单服务器的深入课程或指南,然后再从那里开始。

    您的API应该托管在始终运行的服务器上—您不能将其托管在Github上(Github只托管代码)。从那里,您将能够从任何其他机器(包括同一台机器)调用API。在这种情况下,node.js应用程序就是服务器。接下来,您可以创建一个客户端应用程序/脚本来
        app.listen(3000, function() {
            console.log('we be listening to da port of 3000');
        });
    
        //example 1
        $.ajax({
            type: 'POST',
            url: '/wiki/' + 'descriptions',
            data: tempDes,
            success: function(sendData) {
            }
        });
        //example 2
        $.ajax({
            type: 'POST',
            url: '/wiki/' + foldername,
            data: foldername,
            success: function(folderData) {
            }
        });