ApiGility — получение ошибок проверки с помощью PUT

Я новичок в ApiGility и пытаюсь обновить свою корзину с помощью вызова API, а не маршрута. Я использую Zend Framework 2 с API-интерфейсом, подключенным к коду.

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

Мой модуль.config:

Настройки корзины обновлений:

 'Api\\V1\\Rest\\Updatecart\\Controller' => array(
        'listener' => 'Api\\V1\\Rest\\Updatecart\\UpdatecartResource',
        'route_name' => 'api.rest.updatecart',
        'route_identifier_name' => 'updatecart_id',
        'collection_name' => 'updatecart',
        'entity_http_methods' => array(
            0 => 'GET',
            1 => 'PATCH',
            2 => 'PUT',
            3 => 'DELETE',
        ),
        'collection_http_methods' => array(
            0 => 'GET',
            1 => 'POST',
            2 => 'PUT',
            3 => 'PATCH',
            4 => 'DELETE',
        ),
        'collection_query_whitelist' => array(
            0 => 'prod_id',
            1 => 'quantity',
            2 => 'quantity_accumulation',
            3 => 'tax',
        ),
        'page_size' => 25,
        'page_size_param' => null,
        'entity_class' => 'Api\\V1\\Rest\\Updatecart\\UpdatecartEntity',
        'collection_class' => 'Api\\V1\\Rest\\Updatecart\\UpdatecartCollection',
        'service_name' => 'updatecart',
    ),

Соответствующие настройки фильтра:

'Api\\V1\\Rest\\Updatecart\\Validator' => array(
        0 => array(
            'name' => 'prod_id',
            'required' => true,
            'filters' => array(
                0 => array(
                    'name' => 'Zend\\Filter\\Int',
                    'options' => array(),
                ),
            ),
            'validators' => array(),
            'description' => 'The id of the product in the cart to be updated',
            'error_message' => 'Missing product id',
            'allow_empty' => false,
            'continue_if_empty' => false,
        ),
        1 => array(
            'name' => 'quantity',
            'required' => true,
            'filters' => array(),
            'validators' => array(),
            'description' => 'quantity of product',
            'error_message' => 'You must include a quantity',
            'allow_empty' => false,
            'continue_if_empty' => false,
        ),
        2 => array(
            'name' => 'tax',
            'required' => true,
            'filters' => array(),
            'validators' => array(),
            'description' => 'Add the VAT, GST, Sales Tax that will be applicable to this item. Use 0.00 for no value.',
            'error_message' => 'Please add a tax value, 0.00 for no value.',
            'allow_empty' => false,
            'continue_if_empty' => false,
        ),
        3 => array(
            'name' => 'quantity_accumulation',
            'required' => true,
            'filters' => array(
                0 => array(
                    'name' => 'Zend\\Filter\\Boolean',
                    'options' => array(),
                ),
            ),
            'validators' => array(),
            'description' => 'Either accumulate the entered quantity to the current basket quantity or set as the entered quantity.',
            'allow_empty' => false,
            'continue_if_empty' => false,
            'error_message' => 'Quantity accumulation field error.',
        ),
    ),

При вызове метода PUT:

https://cloud.mysite.dev:8890/api/updatecart/1?prod_id=1&quantity=1&update_type=1&tax=0.00

Я продолжаю получать ошибки Failed Validation:

{
"validation_messages": {
"prod_id": [
"Missing product id"
],
"quantity": [
"You must include a quantity"
],
"tax": [
"Please add a tax value, 0.00 for no value."
],
"quantity_accumulation": [
"Quantity accumulation field error."
]
},
"type": "http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html",
"title": "Unprocessable Entity",
"status": 422,
"detail": "Failed Validation"
}

person HappyCoder    schedule 15.01.2015    source источник


Ответы (1)


Вам необходимо предоставить свои данные в виде http body (полезной нагрузки) в формате json. Выполните вызов URI без параметров запроса.

https://cloud.mysite.dev:8890/api/updatecart/1

{
    "prod_id": 1,
    "quantity": 1,
    "update_type": 1,
    "tax": "0.00"
}

Также убедитесь, что вы указали правильные заголовки запроса:

Accept: application/json
Content-Type: application/json
person Bram Gerritsen    schedule 15.01.2015
comment
хорошо, спасибо, есть идеи, как это сделать через Chrome Postman? Я пробовал несколько разных методов, но не совсем уверен, как это сделать правильно. TX - person HappyCoder; 16.01.2015
comment
Конечно, я тоже им пользуюсь. Введите URI запроса, выберите PUT в раскрывающемся списке. Добавьте заголовки, нажав кнопку заголовков. Вы можете вставить полезную нагрузку, нажав кнопку raw. - person Bram Gerritsen; 16.01.2015