【问题标题】:How to effectively translate Javascript fetch functions into Pyscript?如何有效地将 Javascript 获取函数转换为 Pyscript?
【发布时间】:2022-10-20 10:22:06
【问题描述】:

所以最近我一直在处理使用 Pyscript 制作网站的问题。但是我无法让 Python 中的 asyncio 与我用 JS 编写的函数一起工作。有一种方法可以直接在 Python 中编写此函数,但我不知道该怎么做。(据说可以通过 pyfetch 或导入窗口来完成,主要问题是我不明白如何添加附加选项)

async function catchJob(ean){
  const encodedParams = new URLSearchParams();
  encodedParams.append("source", "amazon");
  encodedParams.append("country", "de");
  encodedParams.append("values", ean);

  const options = {
    method: 'POST',
    headers: {
      'content-type': 'application/x-www-form-urlencoded',
      'X-RapidAPI-Key': '*****************',
      'X-RapidAPI-Host': '*************'
    },
    body: encodedParams
  };
  let obj
  const res = await fetch('URL', options);
  obj = await res.json();
  getPrice(obj.job_id)
}

我试图做类似的事情,但无济于事:

async def getPrice(id):
    options = {
      method: 'GET',
      headers: {
        'X-RapidAPI-Key': '8ff35a5077msh736dbb57384b7d9p1c9baejsnab3d923caaeb',
        'X-RapidAPI-Host': 'price-analytics.p.rapidapi.com'
      }
    }
    res = await pyfetch(f'https://price-analytics.p.rapidapi.com/poll-job/{id}', options) 
    print(res)

此外,我遇到的更大问题是在编写函数后不了解如何初始化函数。 如果有这方面专业知识的人可以提供帮助,我将不胜感激!感谢您的回复,祝您有美好的一天!

【问题讨论】:

    标签: python python-asyncio fetch-api pyscript


    【解决方案1】:

    据我了解,虽然 JavaScript 的 'fetch' 可以接受选项对象作为参数,但 pyfetch 接受关键字参数。此外,您的print(res) 将返回响应对象,而不是响应的内容。这样的事情将执行对 api 的调用并显示响应对象的内容。请注意,我创建了一个“结果”变量来保存响应 json,然后将其打印出来。

    <py-script>
    from pyodide.http import pyfetch
    ...
    async def getPrice(id):
        headers = {'X-RapidAPI-Key': '8ff35a5077msh736dbb57384b7d9p1c9baejsnab3d923caaeb',
            'X-RapidAPI-Host': 'price-analytics.p.rapidapi.com'}   
        res = await pyfetch(f'https://price-analytics.p.rapidapi.com/poll-job/{id}', headers=headers, method="GET") 
        result = await res.json()
        print(result)
    ...
    </py-script>
    

    至于您的陈述,“我还有一个更大的问题是在我编写完函数后不了解如何初始化函数”,页面应该如何工作? 'id' 参数是否由应该触发该功能的用户输入到输入字段中,也许是通过单击提交按钮?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多