首页 > 解决方案 > PythonAPI 请求

问题描述

Source=["SGD"]
Destination=["USD"]
Amount=[5000]

```import requests
   url = "https://api.currencyfair.com/comparisonQuotes"
   payload = "{\"currencyFrom\":\"SGD\",\"currencyTo\":\"EUR\",\"type\":\"SELL\",\"amountInfo\": 
  {\"amount\":50000,\"scale\":2}}"
  headers = {
    'user-agent': "vscode-restclient",
    'content-type': "application/json",
    'accept': "application/json"
    }
   response = requests.request("POST", url, data=payload, headers=headers)
   print(response.text)

我需要将值传递给有效负载字符串 - payload = "{"currencyFrom":" SGD ","currencyTo":" EUR ","type":"SELL","amountInfo":{"amount": 50000 ,"scale ":2}}" 需要使用上面创建的 3 个列表将值传递给有效负载```

标签: pythongoogle-api-python-client

解决方案


你能试着解释一下你在追求什么吗?

我怀疑你的意思是你想在每次调用函数发布数据时动态更新文本有效负载中的值。

我通常会通过创建一个占位符字符串然后通过在运行时替换占位符值来更新它来做到这一点。

payload = "{\"currencyFrom\":\"@currencyFrom\",\"currencyTo\":\"@currencyTo\",\"type\":\"SELL\",\"amountInfo\": {\"amount\":@amountInfo,\"scale\":2}}"

currencyFrom = 'USD'
currencyTo = 'EUR'
amountInfo = 50000

payload = payload.replace('@currencyFrom', currencyFrom).replace('@currencyTo', currencyTo).replace('@amountInfo', amountInfo)

查看您尝试与之交互的 API,这是它所期望的示例:

{"currencyFrom": "EUR",
"currencyTo": "GBP",
"type": "SELL",
"amountInfo": {"amount": 100},
"ignoreFee": false}

这是一个遵循特定格式的 JSON 对象,如果您尝试在“currencyFrom”、“currencyTo”等字段中传递一个列表而不是字符串,您将收到错误消息。

要获取多个值作为响应,只需对 API 执行多个请求,例如:

payload = "{\"currencyFrom\":\"@currencyFrom\",\"currencyTo\":\"@currencyTo\",\"type\":\"SELL\",\"amountInfo\": {\"amount\":@amountInfo,\"scale\":2}}"

currencyFrom = ['USD', 'GBP']
currencyTo = ['EUR', 'CHF']
amountInfo = 50000

payload = payload.replace('@currencyFrom', currencyFrom).replace('@currencyTo', currencyTo).replace('@amountInfo', amountInfo)
for currFrom in currencyFrom:
    for currTo in currencyTo:
        for amount in amountInfo:
            payload = payload.replace('@currencyFrom', currFrom ).replace('@currencyTo', currTo ).replace('@amountInfo', amount )
            response = requests.request("POST", url, data=payload, headers=headers)

希望这是有道理的!

编辑:根据您的评论更新代码。


推荐阅读