尝试调用 Lifx API 并在一种情况下出现错误,但在另一种情况下却没有

Trying to call Lifx API and getting Error in one case but not the other

好的,节省 space 我会 post 段代码。其次,我不是 Python 程序员。我通常是C#。所以我尽了最大努力,尤其是在发现没有 SWITCH STATEMENT 时。

所以我的 class 中有一种方法可以与 Lifx Cloud API 通信,而且效果很好。

def GetAllLifxs(self):
        selector = 'all';

        uri = '%s%s' % (self._baseUri, selector)
        response = requests.get(uri, headers = self._headers)

        result = LifxProxyResult(999, {})
        if response:
            result = LifxProxyResult(response.status_code, json.loads(response.text))

        return result

上面的代码最终命中 API URL: https://api.lifx.com/v1/lights/all

我正在尝试调用(这不是唯一具有相同问题的方法)切换 api 调用。我尝试了几种不同的方法 selectors 仍然没有。

切换代码如下:

def ToggleLight(self, value, selectorType = 'all'):
        if not selectorType == 'all':
            if value == None:
                raise TypeError('[value] cannot be None.')

        typeSwitch = {
            'id': 'id:%s' % value,
            'label': 'label:%s' % value,
            'group_id': 'group_id:%s' % value,
            'group': 'group:%s' % value,
            'location_id': 'location_id:%s' % value,
            'location': 'location:%s' % value,
            'scene_id': 'scene_id:%s' % value
        }

        #If nothing just for fun Toggle ALL lights
        selector = '%s/toggle' % typeSwitch.get(selectorType, 'all')   

        uri = '%s%s' % (self._baseUri, selector)
        response = requests.get(uri, headers = self._headers)

        return response

三次尝试有一个 Response Code of 404ToggleLight 方法在每种情况下都会产生这些 URLs.

  1. https://api.lifx.com/v1/lights/label:DreLight/toggle
  2. https://api.lifx.com/v1/lights/id:d073d5127a6e/toggle
  3. https://api.lifx.com/v1/lights/all/toggle
当我调用 ToggleLight 方法时,其中

None 有效。但这是踢球者。当我将 URLs 生成的 url 复制到这个普通的 Python 文件中时,运行 它可以正常运行并正确操纵光线。

import requests

token = "MyMagicKeyHere"

headers = {
    "Authorization": "Bearer %s" % token,
}

response = requests.post('https://api.lifx.com/v1/lights/label:DreLight/toggle', headers=headers)

Python 对我来说太陌生了,我不明白我的问题是什么。由于使用令牌设置 header 信息的函数对于每种方法都是相同的,所以我不认为它可能是那样。

提前感谢第二双眼睛。业务。

编辑:-------------------- 为了配合我得到的答案,我可以更仔细地关注我的方法图表和我输入的内容。我很愚蠢地搞砸了(新词)。孩子们的教训是当你被卡住然后回来时走开。多看也无济于事。

问题似乎是在 ToggleLight 中调用 request.get,而不是像在独立程序中那样调用 requests.post