2401_85254448 2024-07-01 11:24 采纳率: 66.7%
浏览 4
已结题

用Python上傳api資料

api類型是restapi

import requests
import json

讀取JSON文件

with open('en.json', 'r', encoding='utf-8') as f:
data = json.load(f)

設置API URL

url = 'https://cmcrc.dyndns.org/api/plants'

使用POST方法上傳JSON數據到API

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

打印服務器返回的響應文本

print(response.text)

{"data":null,"error":{"status":400,"name":"ValidationError","message":"this must be a object type, but the final value was: null (cast from the value [\n {\n \"Title\": \"\\\"China Aloes\\\"\",\n \"Latin\": \"\\\"Aloe vera \\\"\",\n \"Origin\": \"\\\"Liliaceae\\\"\",\n \"PartUsed\": \"\\\"Juice\\\"\",\n \"Properties\": \"\\\"Taste bitter, cold in nature.\\\"\",\n \"Functions\": \"\\\"Clears the liver. Used for constipation induced by accumulation of heat.\\\"\",\n \"Pid\": \"\\\"10001\\\"\",\n \"locale\": \"\\\"en\\\"\"\n },\n {\n \"Title\": \"\\\"False Sumac\\\"\",\n \"Latin\": \"\\\"Brucea javanica\\\"\",\n \"Origin\": \"\\\"Simaroubaceae\\\"\",\n \"PartUsed\": \"\\\"Dried mature fruits\\\"\",\n \"Properties\": \"\\\"Taste bitter, cold in nature, mild-toxic.\\\"\",\n \"Functions\": \"\\\"Clearing heat-toxin. Used for hemafecia due to pyretic toxicity.\\\"\",\n \"Pid\": \"\\\"10002\\\"\",\n \"locale\": \"\\\"en\\\"\"\n }\n]).","details":{"errors":[{"path":[],"message":"this must be a object type, but the final value was: null (cast from the value [\n {\n \"Title\": \"\\\"China Aloes\\\"\",\n \"Latin\": \"\\\"Aloe vera \\\"\",\n \"Origin\": \"\\\"Liliaceae\\\"\",\n \"PartUsed\": \"\\\"Juice\\\"\",\n \"Properties\": \"\\\"Taste bitter, cold in nature.\\\"\",\n \"Functions\": \"\\\"Clears the liver. Used for constipation induced by accumulation of heat.\\\"\",\n \"Pid\": \"\\\"10001\\\"\",\n \"locale\": \"\\\"en\\\"\"\n },\n {\n \"Title\": \"\\\"False Sumac\\\"\",\n \"Latin\": \"\\\"Brucea javanica\\\"\",\n \"Origin\": \"\\\"Simaroubaceae\\\"\",\n \"PartUsed\": \"\\\"Dried mature fruits\\\"\",\n \"Properties\": \"\\\"Taste bitter, cold in nature, mild-toxic.\\\"\",\n \"Functions\": \"\\\"Clearing heat-toxin. Used for hemafecia due to pyretic toxicity.\\\"\",\n \"Pid\": \"\\\"10002\\\"\",\n \"locale\": \"\\\"en\\\"\"\n }\n]).","name":"ValidationError"}]}}}
這是報錯

  • 写回答

3条回答 默认 最新

  • 阿里嘎多学长 2024-07-01 11:24
    关注

    以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:


    看起来你在使用Python的requests库上传数据到RESTful API时遇到了问题。错误信息表明服务器期望接收的数据类型是一个对象,但实际收到的是一个null值,这可能是因为在发送请求时,json参数的使用方式不正确。

    根据你提供的错误信息,问题似乎在于你尝试上传的数据是一个JSON数组,但API期望的可能是单个对象。不过,错误信息中的描述与实际数据格式似乎存在矛盾,因为从你提供的JSON示例来看,它看起来像是一个数组,而不是null

    这里有几个可能的解决方案:

    1. 检查API文档:首先,确保你理解了API的期望数据格式。查看API文档,确认它是否期望一个对象或数组。

    2. 调整数据格式:如果API确实期望一个对象,你可能需要调整你的JSON数据结构,使其成为一个对象而不是数组。例如:

      {
        "data": [
          {
            "Title": "China Aloes",
            "Latin": "Aloe vera ",
            "Origin": "Liliaceae",
            "PartUsed": "Juice",
            "Properties": "Taste bitter, cold in nature.",
            "Functions": "Clears the liver. Used for constipation induced by accumulation of heat.",
            "Pid": "10001",
            "locale": "en"
          },
          ...
        ]
      }
      
    3. 修改请求方式:如果你确定API期望的是一个数组,那么可能需要检查API的其他参数或请求头是否正确设置。有时候,API可能需要特定的请求头(如Content-Type)来正确解析数据。

    4. 调试请求:使用工具如Postman或curl来手动发送请求,以验证API期望的数据格式和你的请求是否匹配。

    5. 错误处理:在Python代码中添加错误处理逻辑,以便在发生错误时能够更清楚地了解问题所在。

    这里是一个修改后的示例代码,假设API期望的是一个包含数据数组的对象:

    import requests
    import json
    
    # 讀取JSON文件
    with open('en.json', 'r', encoding='utf-8') as f:
        data = json.load(f)
    
    # 将数据包装在一个对象中
    payload = {"data": data}
    
    # 設置API URL
    url = 'https://cmcrc.dyndns.org/api/plants'
    
    # 使用POST方法上傳JSON數據到API
    response = requests.post(url, json=payload)
    
    # 打印服務器返回的響應文本
    print(response.text)
    

    请注意,这只是一个示例,你可能需要根据API的具体要求调整数据结构。如果需要进一步的帮助,请提供更多的API文档信息或错误详情,我会尽力提供更具体的帮助。

    目前没有特定的参考链接,因为解决方案主要基于对错误信息的分析和一般的API交互知识。如果你需要查找更多关于requests库或JSON数据处理的信息,你可以查看以下资源:

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 7月18日
  • 已采纳回答 7月10日
  • 创建了问题 7月1日

悬赏问题

  • ¥15 35114 SVAC视频验签的问题
  • ¥15 impedancepy
  • ¥15 在虚拟机环境下完成以下,要求截图!
  • ¥15 求往届大挑得奖作品(ppt…)
  • ¥15 如何在vue.config.js中读取到public文件夹下window.APP_CONFIG.API_BASE_URL的值
  • ¥50 浦育平台scratch图形化编程
  • ¥20 求这个的原理图 只要原理图
  • ¥15 vue2项目中,如何配置环境,可以在打完包之后修改请求的服务器地址
  • ¥20 微信的店铺小程序如何修改背景图
  • ¥15 UE5.1局部变量对蓝图不可见