Update generating-schemas.md
This commit is contained in:
@@ -1 +1,61 @@
|
||||
# Generating Schema
|
||||
|
||||
## What
|
||||
- A schema is metadata that defines the structure, properties, and relationships between data. It also defines the rules that must be adhered to and is usually in the form of a document.
|
||||
- A structured approach is always recommended for handling and manipulating data.
|
||||
- The "$ref" keyword is used to reference a schema.
|
||||
|
||||
## Why
|
||||
- A schema definition makes the process of handling data more structured.
|
||||
- The process of validation and handling user input errors can be imprioved through the use of schemas.
|
||||
- Schemas encourage the 'single source of truth' (single place to update a definition) concept which, among other things, makes it easier to create and maintain endpoints.
|
||||
|
||||
## Best Practices
|
||||
- It is advisable to always use a schema when you define and implement your API.
|
||||
- Use schemas to rapidly extract titles, descriptions, and samples for easy API documentation.
|
||||
|
||||
## JSON Schema
|
||||
- JSON (Javascript Object Notation) is a popular, human readable data format that is easy to parse at the server or client side.
|
||||
- JSON Schema is a standard that contains information about the properties of a JSON object that can be used by an API. It also helps validate the structure of JSON data.
|
||||
-The properties include: name, title, type etc.
|
||||
- JSON Schema Specification is divided into three parts:
|
||||
- **JSON Schema Core**: describes the basic foundation of JSON Schema
|
||||
- **JSON Schema Validation**: describes methods that define validation constraints. It also describes a set of keywords that can be used to specify validations.
|
||||
- **JSON Hyper-Schema**: an extension of the JSON Schema Specification that defines hyperlink, images, and hypermedia-related keywords.
|
||||
|
||||
## Example
|
||||
Assume you have an API that requires data provided in the format below:
|
||||
|
||||
```
|
||||
{
|
||||
pets: [
|
||||
{id:1 petName: "Blaze", petType: "Canine", age: 2},
|
||||
{id: 2, petName: "Felicia", petType: "Feline", age: 1}
|
||||
{id: 2, petName: "Bolt", petType: "Canine", age: 3}
|
||||
|
||||
]
|
||||
}
|
||||
```
|
||||
As seen above, each object in the pets array contains the following properties: id, petName, and petType. You can create a schema definition to validate the data and ensure it is in the expected format. The schema definition is outlined below:
|
||||
|
||||
```
|
||||
{
|
||||
"type":"object",
|
||||
"properties": {
|
||||
"pets": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"id": {"type": "number"},
|
||||
"petName": {"type": "string", "required": true},
|
||||
"petType": {"type": "number", "required": true},
|
||||
"age": {"type": "number"}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
### Related Articles
|
||||
- [JSON Schema](http://json-schema.org/specification.html)
|
||||
|
||||
Reference in New Issue
Block a user