Приложение логики не может найти vlaue из действия Parse JSON - PullRequest
0 голосов
/ 28 мая 2019

У меня есть приложение логики, которое запускается при вызове HTTP. С этим вызовом приходит набор заголовков, большинство из которых используются в различных операторах switch. Используя действие Parse JSON, которое я подаю в заголовках из запроса, они успешно анализируют (изображение 1), но для одного из заголовков (searchType) оператор switch по каким-то причинам оценивается как ноль (изображение 2). Я не могу на всю жизнь понять, почему.

Я попытался переделать приложение логики с нуля, полностью скопировать приложение в другую среду и попытался использовать выражение для доступа к проанализированному значению вместо динамического содержимого. Когда я пробую выражение, мне говорят, что это недопустимое выражение (изображение 3). Это выражение является прямой копией того, что используется в представлении кода.

Любые предложения относительно того, что я могу сделать, чтобы решить эту проблему?

Успешный разбор заголовков

enter image description here

проанализированный заголовок оценивается как ноль

enter image description here

неверное выражение

enter image description here

JSON для репликации логического приложения

{
    "definition": {
        "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
        "actions": {
            "HeadersJson": {
                "inputs": {
                    "content": "@triggerOutputs()['headers']",
                    "schema": {
                        "properties": {
                            "APICallFor": {
                                "type": "string"
                            },
                            "Accept-Encoding": {
                                "type": "string"
                            },
                            "Accept-Language": {
                                "type": "string"
                            },
                            "Connection": {
                                "type": "string"
                            },
                            "Content-Length": {
                                "type": "string"
                            },
                            "Content-Type": {
                                "type": "string"
                            },
                            "Host": {
                                "type": "string"
                            },
                            "User-Agent": {
                                "type": "string"
                            },
                            "searchType": {
                                "type": "string"
                            },
                            "x-ms-action-tracking-id": {
                                "type": "string"
                            },
                            "x-ms-activity-vector": {
                                "type": "string"
                            },
                            "x-ms-client-request-id": {
                                "type": "string"
                            },
                            "x-ms-client-tracking-id": {
                                "type": "string"
                            },
                            "x-ms-correlation-id": {
                                "type": "string"
                            },
                            "x-ms-execution-location": {
                                "type": "string"
                            },
                            "x-ms-tracking-id": {
                                "type": "string"
                            },
                            "x-ms-workflow-id": {
                                "type": "string"
                            },
                            "x-ms-workflow-name": {
                                "type": "string"
                            },
                            "x-ms-workflow-operation-name": {
                                "type": "string"
                            },
                            "x-ms-workflow-resourcegroup-name": {
                                "type": "string"
                            },
                            "x-ms-workflow-run-id": {
                                "type": "string"
                            },
                            "x-ms-workflow-run-tracking-id": {
                                "type": "string"
                            },
                            "x-ms-workflow-subscription-id": {
                                "type": "string"
                            },
                            "x-ms-workflow-system-id": {
                                "type": "string"
                            },
                            "x-ms-workflow-version": {
                                "type": "string"
                            }
                        },
                        "type": "object"
                    }
                },
                "runAfter": {},
                "type": "ParseJson"
            },
            "Switch": {
                "cases": {
                    "Get_Departments": {
                        "actions": {
                            "Switch_3": {
                                "cases": {
                                    "Case": {
                                        "actions": {
                                            "Response_5": {
                                                "inputs": {
                                                    "body": "got to individual",
                                                    "statusCode": 200
                                                },
                                                "kind": "Http",
                                                "runAfter": {},
                                                "type": "Response"
                                            }
                                        },
                                        "case": "individual"
                                    },
                                    "Case_2": {
                                        "actions": {
                                            "Response": {
                                                "inputs": {
                                                    "body": "got to bulk",
                                                    "statusCode": 200
                                                },
                                                "kind": "Http",
                                                "runAfter": {},
                                                "type": "Response"
                                            }
                                        },
                                        "case": "bulk"
                                    }
                                },
                                "default": {
                                    "actions": {
                                        "Response_3": {
                                            "inputs": {
                                                "body": "the searchType parameter is not valid",
                                                "statusCode": 200
                                            },
                                            "kind": "Http",
                                            "runAfter": {},
                                            "type": "Response"
                                        }
                                    }
                                },
                                "expression": "@body('HeadersJson')?['serachType']",
                                "runAfter": {},
                                "type": "Switch"
                            }
                        },
                        "case": "departments"
                    }
                },
                "default": {
                    "actions": {
                        "Response_2": {
                            "inputs": {
                                "body": "the APICallFor header is not valid",
                                "statusCode": 500
                            },
                            "kind": "Http",
                            "runAfter": {},
                            "type": "Response"
                        }
                    }
                },
                "expression": "@body('HeadersJson')?['APICallFor']",
                "runAfter": {
                    "HeadersJson": [
                        "Succeeded"
                    ]
                },
                "type": "Switch"
            }
        },
        "contentVersion": "1.0.0.0",
        "outputs": {},
        "parameters": {},
        "triggers": {
            "manual": {
                "inputs": {
                    "schema": {
                        "properties": {
                            "searchString": {
                                "type": "string"
                            },
                            "searchType": {
                                "type": "string"
                            }
                        },
                        "type": "object"
                    }
                },
                "kind": "Http",
                "operationOptions": "EnableSchemaValidation",
                "type": "Request"
            }
        }
    }
}

1 Ответ

1 голос
/ 28 мая 2019

Ваше выражение недопустимо, потому что @ в вашем выражении, выражение @ используется в представлении кода, оно должно быть просто body('HeadersJson')?['searchType'].

Поскольку ваш searchType является нулевым, вероятно, схема ParseJson неверна, поэтому убедитесь, что схема соответствует doc way *1009*.

И если вы хотите использовать данные заголовка, вам не нужно анализировать заголовок по json, потому что данные уже в формате json, однако, если вы передаете данные с телом запроса, вам нужно будет их проанализировать. Также я протестировал его, он будет работать с triggerOutputs()['headers']['searchType'], поэтому просто вставьте его в выражение, если вы используете представление кода, это будет @triggerOutputs()['headers']['searchType'].

enter image description here

enter image description here

...