【问题标题】:POST Request to JSON API on HTML Site from Broswer从浏览器向 HTML 站点上的 JSON API POST 请求
【发布时间】:2018-01-09 15:10:34
【问题描述】:

我正在尝试使用 ajax 来查询超市的搜索 API,并以名称、价格和单价进行回复。要使用 Python 请求执行此操作,我将使用以下代码:

import requests
import json

payload ={
   'Filters':'[]',
   'IsSpecial':'false',
   'Location':'/shop/search/products?searchTerm=banana',
   'PageNumber':'1',
   'PageSize':'24',
   'SearchTerm':'banana',
   'SortType':'TraderRelevance'
}

url = "https://www.woolworths.com.au/apis/ui/Search/products"

data = requests.post(url, json=payload).json()

print(data['Products'][0]['Name'])
print("$", data['Products'][0]['Products'][0]['Price'], "0", sep='')
print(data['Products'][0]['Products'][0]['CupString'])
print()

print(data['Products'][1]['Name'])
print("$", data['Products'][1]['Products'][0]['Price'], "0", sep='')
print(data['Products'][1]['Products'][0]['CupString'])
print()

print(data['Products'][2]['Name'])
print("$", data['Products'][0]['Products'][2]['Price'], "0", sep='')
print(data['Products'][0]['Products'][2]['CupString'])
print()

等等……

我想要做的是将这个 python 代码复制到可以在网络浏览器中使用的东西。这有可能吗?

【问题讨论】:

标签: javascript python html json http


【解决方案1】:

浏览器中的语法几乎相同,但当然是 JavaScript,而不是 Python。

您可以使用request-promise NPM module:

const request = require('request-promise')

let url = "https://www.woolworths.com.au/apis/ui/Search/products"
let payload = {
  'Filters': '[]',
  'IsSpecial': 'false',
  'Location': '/shop/search/products?searchTerm=banana',
  'PageNumber': '1',
  'PageSize': '24',
  'SearchTerm': 'banana',
  'SortType': 'TraderRelevance'
}

request
    .post({
      url,
      json: payload,
      headers: {'Content-Type': 'application/json'}
    })
    .then(res => console.log(res))
    .catch(err => console.log(err))

您需要在 then 方法中打印或解析数据,因为 JavaScript 是异步执行的,而不是像 Python 那样同步执行。

如何在浏览器中包含 JavaScript 模块的问题是一个单独的问题,但您可以在 this site 和 Google 上找到大量示例。

还有fetch API,在这一点上具有良好的浏览器支持,并且不需要您引入外部模块。语法非常相似,你可以在MDN here阅读更多内容。

【讨论】:

  • 我不知道如何使用 NPM,我已经研究过并在我的计算机上安装了模块,但是如何将它放入 HTML 中?我收到错误消息:“未捕获的 ReferenceError:未定义要求”
猜你喜欢
  • 1970-01-01
  • 2017-07-29
  • 1970-01-01
  • 2019-08-29
  • 2015-11-03
  • 2020-05-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多