1.7.1
- [ADD] OPTIONS method return json schema by @jsonschema annotation #116
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))