Как эффективно перевести функции выборки Javascript в Pyscript?

Итак, недавно я занимался созданием веб-сайта с использованием Pyscript. Но я не могу заставить asyncio в Python работать с функцией, которую я написал в 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': '',
        'X-RapidAPI-Host': ''
      }
    }
    res = await pyfetch(f'https://price-analytics.p.rapidapi.com/poll-job/{id}', options) 
    print(res)

Кроме того, большая проблема, с которой я сталкиваюсь, заключается в том, что я не понимаю, как инициализировать функцию после того, как я ее написал. Если кто-то с опытом в этой теме может помочь, я был бы признателен за это любезно! Спасибо за ответы и хорошего дня!

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
0
142
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Насколько я понимаю, в то время как «выборка» JavaScript может принимать объект параметров в качестве аргумента, pyfetch принимает аргументы ключевого слова. Кроме того, ваш print(res) напечатает объект ответа, а не содержание ответа. Что-то вроде этого выполнит вызов API и отобразит содержимое объекта ответа. Обратите внимание, что я создал переменную «результат» для хранения ответа json, а затем распечатал ее.

<py-script>
import asyncio
from pyodide.http import pyfetch
...
async def getPrice(id):
    headers = {'X-RapidAPI-Key': '',
        'X-RapidAPI-Host': ''}   
    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>

В качестве альтернативы, если вы хотите сохранить свои параметры в переменной options, вам нужно будет передать «options» в качестве аргумента ключевого слова. Также обратите внимание, что ключи в вашем словаре параметров были изменены на строки («метод», «заголовки» и метод, заголовки).

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

Что касается вашего утверждения: «Кроме того, большая проблема, с которой я столкнулся, заключается в том, что я не понимаю, как инициализировать функцию после того, как я ее написал», как должна работать страница? Вводится ли параметр «id» в поле ввода пользователем, который затем должен активировать функцию, возможно, нажав кнопку отправки?

Кроме того, вкратце, я бы поостерегся публиковать ваш ключ API на общедоступном форуме. Ваше здоровье!

Да, это очень помогло в понимании всего этого, но я давно решил эту проблему совсем по-другому!

Ace-Of-Snakes 05.11.2022 16:37

Другие вопросы по теме