Skip to content

1.7.1

Compare
Choose a tag to compare
@koriym koriym released this 29 Jul 10:57
· 1255 commits to 1.x since this release

Example:

Resource class

use BEAR\Resource\Annotation\JsonSchema;
use BEAR\Resource\ResourceObject;

class User extends ResourceObject
{
    /**
     * User
     *
     * Returns a variety of information about the user specified by the required $id parameter
     *
     * @param string $id User ID
     *
     * @JsonSchema(schema="user.json")
     */
    public function onGet($id)
    {
       // $this->body = '$user;

        return $this;
    }
}

Json Schema

user.json

{
  "type": "object",
  "properties": {
    "name": { "$ref": "name.json#/definitions/name"},
    "age": {
      "description": "Age in years",
      "type": "integer",
      "minimum": 20
    }
  },
  "required": ["name", "age"]
}

name.json

{
  "title": "Name",
  "definitions": {
    "name": {
      "type": "object",
      "properties": {
        "firstName": {"type": "string"},
        "lastName": {"type": "string"}
      },
      "required": ["firstName", "lastName"]
    }
  }
}

Request

OPTIONS /user

Response includes request and response meta information .

{
    "GET": {
        "summary": "User",
        "description": "Returns a variety of information about the user specified by the required $id parameter",
        "request": {
            "parameters": {
                "id": {
                    "type": "string",
                    "description": "User ID"
                }
            },
            "required": [
                "id"
            ]
        },
        "schema": {
            "type": "object",
            "properties": {
                "name": {
                    "$ref": "name.json#/definitions/name"
                },
                "age": {
                    "type": "integer",
                    "description": "Age in years",
                    "minimum": 20
                }
            },
            "required": [
                "name",
                "age"
            ]
        }
    }
}

Install

$this->install(JsonSchemalModule($jsonSchemaDir, $jsonValidateDir))