#python
#python
Вопрос:
Мне нужно написать python API для вызова пользователями. Спецификации ввода и вывода приведены ниже в качестве одного примера:
// input
{"keyword":"iPhone",
"category":"phone"
}
// output
{
"keyword": "iPhone",
"status": "success",
"result": [
{
"word": "iPhone",
"type": "smart_phone"
}, "extend":{}
]
}
Я не собираюсь писать http-сервис, а просто обычную функцию python для вызова, и пользователю необходимо установить:
pip install my_api
Входные данные — это словарь, а выходные данные также являются словарем. Как заполнить поле «статус» в выводимом словаре? Я считаю, что это необходимо для службы http, чтобы указать, является ли вызов успешным или нет. Поскольку я не использую http-сервис, я не знаю, как сгенерировать значение для «статуса» в выводе. Функция, которую я пишу, будет выглядеть так:
def query_by_dict(input: Dict) -> Dict:
result = {}
...
result = self.query_helper(input)
return result
если self.query_helper() завершается с ошибкой или не выдает никакого значения, я просто верну клиенту пустой результат dict ‘result’ . Почему поле «статус» находится в спецификации вывода?
Комментарии:
1. Просто вызовите
result['status'] = "<request status>"
непосредственно перед тем, как вернуть результат из вашей функции.
Ответ №1:
Если мы знаем, что result
в query_by_dict
функции уже есть словарь, мы можем просто добавить еще один аргумент в этот словарь. Как показано ниже:
def query_by_dict(input: Dict) -> Dict:
result = {}
...
result = self.query_helper(input)
result['status'] = 'success' if result else 'failure'
return result
В приведенном выше примере важной частью кода является result['status']
то, где мы определяем status
аргумент результирующего словаря. Поскольку мы знаем, что пустой результат словаря является ошибкой, мы можем просто проверить это и задать status
аргумент.
Комментарии:
1. Но как получить значение <желаемый результат состояния>? Это будет либо «успех», либо «сбой». Как мне узнать, какое из них используется для каждого вызова? Когда dict пуст, это успех, в противном случае — сбой. Так полезно ли это поле?
2. @marlon как насчет
results["status"] = bool(result) and "success" or "failure"
?3. @DmitryBelaventsev, вы имеете в виду сначала получить False и True, а затем преобразовать их в success и failure?
4. да, почему бы и нет? 🙂 но ИМО это не очень полезно. лучше просто логическое значение
5. @marlon Я обновил свой ответ, чтобы можно было получить результат состояния.