Передача текущих параметров URL-адреса в Cloud Function Python API в IBM Cloud

Я новичок и пытаюсь создать облачную функцию в IBM Cloud. Мой API отлично работает только с "hello world". Мне нужно передать параметры из URL-адреса, чтобы управлять им в моем Python API. Нравиться:

URL: https://fa75e0fa.eu-gb.apigw.appdomain.cloud/testapi/test1?id=11

Мне нужно передать значение id = 11 в конце указанного выше URL-адреса в мой код Python (Python 3.70).

У меня вот это:

#
#
# main() will be run when you invoke this action
#
# @param Cloud Functions actions accept a single parameter, which must be a JSON object.
#
# @return The output of this action, which must be a JSON object.
#
#
import sys

def main(dict):
    return { 'message': 'Hello world' }

Результат: {"message": "Hello world"}

Я пытался:

import sys
import urllib3, requests, json
import requests
import os

def main(dict):
    id1=requests.GET.get('id')

    return { 'message': 'Hello world',
             'id': json.loads(id1.text)

    }

Результат:

Идентификатор активации: 4e97b3be9b2b49f397b3be9b2b99f34d Результаты: {"error": "модуль 'requests' не имеет атрибута 'GET'"} Журналы:

["2020-04-16T11: 29: 34.215661Z stderr: Traceback (последний вызов последний):", "2020-04-16T11: 29: 34.215717Z stderr: File \" / action / 1 / src / exec __. Py \ ", строка 66, in",
"2020-04-16T11: 29: 34.215722Z stderr: res = main (payload)",
"2020-04-16T11: 29: 34.215725Z stderr: File \ "/ action / 1 / src / main __. py \", строка 10, в main ",
" 2020-04-16T11: 29: 34.215728Z stderr: id1 = requests.GET.get ('id') ",
" 2020-04-16T11: 29: 34.215731Z stderr: AttributeError: модуль 'requests' не имеет атрибута 'GET' "," 2020-04-16T11: 29: 34.215734Z
stderr: "]

Не могли бы вы помочь? Спасибо.


person mg g    schedule 16.04.2020    source источник


Ответы (1)


def main(args):
    arg1=args.get("arg1")
    myarg=args.get("anotherarg")

    return {"one": arg1, "two": myarg}

Параметры передаются в среде, к которой вы можете легко получить доступ. Они не являются частью структуры запроса. arg1 будет вашим идентификатором:

import sys
import urllib3, requests, json
import requests
import os

def main(dict):
    id1=dict.get('id')

    return { 'message': 'Hello world',
             'id': id1)

    }
person data_henrik    schedule 16.04.2020
comment
Но значит ли это, что у меня в скрипте будет 2 основных функции, пожалуйста? - person mg g; 16.04.2020
comment
Я имею в виду, что у меня будут main (dict) и main (args)? пожалуйста? - person mg g; 16.04.2020
comment
Я пробовал только main (args) с приведенным выше кодом. Однако это дает мне: {code: 5559f9968f11637895386cd3d5ec57d9, ошибка: запрошенный ресурс не существует. } при запуске URL: fa75e0fa.eu-gb.apigw. appdomain.cloud/testapi/test1?id=11 - person mg g; 16.04.2020
comment
Я назвал это по-другому. Вы можете назвать его dict, args или params. Используйте get () для доступа к переменной, которую вы ищете и которая была передана в качестве параметра. - person data_henrik; 16.04.2020
comment
А вот полный пример, взятый из Википедии: github .com / data-henrik / chatbot-talk / blob / 2020letsmake /. - person data_henrik; 16.04.2020
comment
Большое спасибо ... Сработало как шарм! :) - person mg g; 16.04.2020
comment
Еще один вопрос, я знаю, что вы тоже являетесь экспертом в Watson Assistant Chatbot :). Я хочу сохранить переменную из пользовательского ввода, включив слоты и системные объекты, такие как @ sys-number .. Я могу сохранить номер, выбрав проверку sys-number, или сохранив дату, выбрав проверку sys-date ... Но для текст / символы, пожалуйста, я не могу найти sys-text или sys-char .. Итак, как я могу использовать слоты для сохранения текста, пожалуйста? Спасибо - person mg g; 16.04.2020
comment
Процесс заключается в том, что вы отмечаете отвеченные вопросы как таковые и голосуете за них. И вы открываете новые вопросы для новых вопросов. Это не поддержка, а обмен знаниями ... :) - person data_henrik; 17.04.2020
comment
Снова много ... Я открою для этого новый вопрос .. Надеюсь, вы будете там, чтобы ответить :) Голосование за готово :) Я отмечу вопрос как отвеченный .. Еще раз большое спасибо! - person mg g; 17.04.2020