【问题标题】:DigitalOcean API Error When Creating New App - api.digitalocean.com/v2/apps创建新应用程序时出现 DigitalOcean API 错误 - api.digitalocean.com/v2/apps
【发布时间】:2022-01-22 04:20:37
【问题描述】:

尝试在 DigitalOcean 上创建新的 PaaS 应用程序时出错。已经看过docs 并且无法弄清楚为什么这不起作用。 spec 对象基本上取自文档。


import requests

headers = {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer MY_TOKEN'
}

spec = {
    "name": "test-app",
    "region": "nyc1",
    "services": [
            {
                "name": "api",
                "github": {
                    "branch": "main",
                    "deploy_on_push": 'true',
                    "repo": "username/my-app"
                },
                "run_command": "python3 application.py",
                "environment_slug": "python",
                "instance_count": 2,
                "instance_size_slug": "basic-xxs",
                "routes": [
                    {
                        "path": "/api"
                    }
                ]
            }
    ]
}

payload = {'spec': spec}

res = requests.post(
    'https://api.digitalocean.com/v2/apps',
    headers=headers,
    data=payload,
)
print(res)
print(res.json())
print(res.status_code)


我收到以下错误。这是我发送数据的方式有误吗?

<Response [400]>
{'id': 'invalid_argument', 'message': "invalid character 's' looking for beginning of value"}

【问题讨论】:

    标签: python digital-ocean digital-ocean-apps


    【解决方案1】:

    试试:

    1. json=payload(不是data=payload
    2. deploy_on_push": True, 布尔值(不是字符串)

    【讨论】:

    • 收到此错误{'id': 'not_found', 'message': 'not found: getting app'}
    【解决方案2】:
    import requests
    
    headers = {
        'Content-Type': 'application/json',
        'Authorization': 'Bearer MY_TOKEN'
    }
    
    spec = {
        "name": "test-app",
        "region": "nyc1",
        "services": [
                {
                    "name": "api",
                    "github": {
                        "branch": "main",
                        "deploy_on_push": 'True',
                        "repo": "username/my-app"
                    },
                    "run_command": "python3 application.py",
                    "environment_slug": "python",
                    "instance_count": 2,
                    "instance_size_slug": "basic-xxs",
                    "routes": [
                        {
                            "path": "/api"
                        }
                    ]
                }
        ]
    }
    
    payload = {'spec': spec}
    
    res = requests.post(
        'https://api.digitalocean.com/v2/apps',
        headers=headers,
        json=payload,
    )
    print(res)
    print(res.json())
    print(res.status_code)
    

    【讨论】:

    • 更改为:"deploy_on_push": True,后有效
    • @Jin 你用小t(真)写了True,但它总是用大T。然后另一个变化也是json = payload inside res = requests.post。你写了数据=有效载荷。如果我的回答或其他用户的回答对您有用并且您解决了问题,请通过将其标记为绿色勾号来接受它作为问题的解决方案,作为帮助中心的 Stackoverflow 规定:stackoverflow.com/help/accepted-answer
    猜你喜欢
    • 2018-09-16
    • 2020-12-14
    • 1970-01-01
    • 1970-01-01
    • 2021-08-16
    • 1970-01-01
    • 2019-05-23
    • 2020-11-02
    • 1970-01-01
    相关资源
    最近更新 更多