【问题标题】:How can i use the post api using pyodide我如何使用 pyodide 使用 post api
【发布时间】:2021-02-23 14:04:53
【问题描述】:

在pyodide中,它不支持requests模块,因此我们使用open_url从api中获取数据,我们如何使用api使用pyodide发布数据

【问题讨论】:

    标签: python pyodide


    【解决方案1】:

    pyodide 目前不支持 requests 模块,因为它依赖于 WebAssembly 浏览器 VM 中未实现的套接字。

    但是,您可以使用 pyodide 中的 Web API 进行 POST 调用。下面是一个使用XMLHttpRequest的例子

    from js import XMLHttpRequest, Blob
    import json
    
    data = {"a": 1}
    
    req = XMLHttpRequest.new()
    req.open("POST", "https://httpbin.org/anything", False)
    blob = Blob.new([json.dumps(data)], {type : 'application/json'})
    req.send(blob)
    str(req.response)
    

    未来可能会修补一些经典的 HTTP 客户端模块以使用 pyodide 中的 Web API(参见 pyodide#140)。

    【讨论】:

      【解决方案2】:

      您也可以使用 JS Fetch API 直接形成 Python 代码。为此,您首先必须从 js 模块导入 window 对象。这是一个现场演示:

      let python_code = `
      from js import window
      
      def fetch():
        window.fetch('http://karay.me/truepyxel/test.json').then(lambda resp: resp.json()).then(lambda jsoh: show_result(jsoh))
        
      def show_result(data):
        div = window.document.createElement('div')
        #insert into body as a first child
        window.document.body.prepend(div)
        div.innerHTML=window.JSON.stringify(data)
      `
      
      // init environment
      languagePluginLoader
      // then run Python code
        .then(() => pyodide.runPythonAsync(python_code));
      <!DOCTYPE html>
      <html>
      <head>
      <script src="https://pyodide-cdn2.iodide.io/v0.15.0/full/pyodide.js"></script>
      </head>
      <body>
      <button onclick='pyodide.globals.fetch()'>Fetch</button>
      </body>
      </html>

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-10-29
        • 2022-07-04
        • 2019-10-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-06
        相关资源
        最近更新 更多