如何使用pyodide使用postapi

2024-04-23 15:43:46 发布

您现在位置:Python中文网/ 问答频道 /正文

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


Tags: 模块数据apiurlopenrequestspyodide
2条回答

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

&13; 第13部分,;
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>
和#13;
和#13;

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(cfpyodide#140)中使用Web API

相关问题 更多 >