Пользовательский обработчик исключений в composer-rest-server - PullRequest
0 голосов
/ 19 июня 2019

Я использую Hyperledger composer V0.20 и фабрику hlfv12.

  1. Как отключить запросы GET?

    Сервер composer-rest-server генерирует запросы GET и POSTдля всех API.Проблема с GET-запросами состоит в том, что когда GET-запрос выполняется для API, он возвращает формат API в ответе.

    {
    "$class": "org.test.AddAsset",
    "id": "string",
    "name": "string",
    "address": "string",
    "transactionId": "f8fda36f242d5bc03bb63d5c18e89dd03a00d24fc8cf6989ebe63776347c7b26",
    "timestamp": "2019-06-19T07:29:03.440Z"
    }
    

    Я бы потребовал, чтобы он возвращал ошибку: «Нет способаобрабатывать GET /...'

  2. Настраиваемое сообщение об ошибке для 'ValidationError'

    Когда я выполняю запрос POST без обязательных параметров, он возвращает ошибку ValidationError с кодом состояния 422.Он также дает подробную информацию о том, что не так с запросом.

    "error": {
    "statusCode": 422,
    "name": "ValidationError",
    "message": "The `AddAsset` instance is not valid. Details: `id` can't be blank (value: undefined); `name` can't be blank (value: undefined); `address` can't be blank (value: undefined).",
    "details": {
        "context": "AddAsset",
        "codes": {
            "id": [
                "presence"
            ],
            "name": [
                "presence"
            ],
            "address": [
                "presence"
            ]
        },
        "messages": {
            "id": [
                "can't be blank"
            ],
            "name": [
                "can't be blank"
            ],
            "address": [
                "can't be blank"
            ]
        }
    },
    stack: ...
    

    Это нежелательно, поскольку в ответе указывается формат запроса.

  3. Как я могуотключить стек ошибок в ответе?

    В функциях процессора транзакций я обрабатываю исключения, используя блоки try-catch и throw ключевое слово.Когда в блоке try возникает исключение, оно обрабатывается правильно и возвращает желаемое сообщение об ошибке, включая другое сообщение.

    "error": {
        "statusCode": 500,
        "name": "Error",
        "message": "Error trying invoke business network with transaction id aca902e4be57b739aec74b832cf55a7bab3911daf66adf55a62552708c31b767. Error: No valid responses from any peers.\nResponse from attempted peer comms was an error: Error: transaction returned with failure: Error: Something broke!",
        "stack": "Error: Error trying invoke business network with transaction id aca902e4be57b739aec74b832cf55a7bab3911daf66adf55a62552708c31b767. Error: No valid responses from any peers.\nResponse from attempted peer comms was an error: Error: transaction returned with failure: Error: Something broke!\n    at HLFConnection.invokeChainCode (/home/rohit/.nvm/versions/node/v8.9.4/lib/node_modules/composer-rest-server/node_modules/composer-connector-hlfv1/lib/hlfconnection.js:1117:30)\n    at <anonymous>"
    }
    

Можно ли написать центральный настраиваемый обработчик исключений в composer при создании API-интерфейсов с помощью composer-rest-server или существует какой-либо метод, позволяющий избежать вышеуказанных проблем?

...