Make WordPress Core


Ignore:
Timestamp:
10/20/2020 06:22:39 PM (3 years ago)
Author:
TimothyBlynJacobs
Message:

REST API: Add support for the oneOf and anyOf keywords.

This allows for REST API routes to define more complex validation requirements as JSON Schema instead of procedural validation.

The error code returned from rest_validate_value_from_schema for invalid parameter types has been changed from the generic rest_invalid_param to the more specific rest_invalid_type.

Props yakimun, johnbillion, TimothyBlynJacobs.
Fixes #51025.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tests/phpunit/tests/rest-api/rest-test-controller.php

    r49082 r49246  
    129129                    'minProperties'        => 1,
    130130                    'maxProperties'        => 10,
     131                    'anyOf'                => array(
     132                        array(
     133                            'properties' => array(
     134                                'object_id' => array(
     135                                    'type'    => 'integer',
     136                                    'minimum' => 100,
     137                                ),
     138                            ),
     139                        ),
     140                        array(
     141                            'properties' => array(
     142                                'object_id' => array(
     143                                    'type'    => 'integer',
     144                                    'maximum' => 100,
     145                                ),
     146                            ),
     147                        ),
     148                    ),
     149                    'oneOf'                => array(
     150                        array(
     151                            'properties' => array(
     152                                'object_id' => array(
     153                                    'type'    => 'integer',
     154                                    'minimum' => 100,
     155                                ),
     156                            ),
     157                        ),
     158                        array(
     159                            'properties' => array(
     160                                'object_id' => array(
     161                                    'type'    => 'integer',
     162                                    'maximum' => 100,
     163                                ),
     164                            ),
     165                        ),
     166                    ),
    131167                    'ignored_prop'         => 'ignored_prop',
    132168                    'context'              => array( 'view' ),
Note: See TracChangeset for help on using the changeset viewer.