# Sinatra API Checklist
## Create
- Send POST request
- with headers to indicate JSON format
- a method option set to "POST"
- and a body containing `JSON.stringified` form data
- access data in body via `params` in controller route
- call create on the appropriate class and pass in a hash containing data from params (don't pass params directly)
- convert the newly created instance to json and return it to the client
## Read
#### For an index route
- Send a GET request
- with headers to indicate JSON format
- Make the appropriate database query to retrieve records
- convert the collection to json and return it
#### For a show route
- Send of GET request
- with headers to indicate JSON format
- include a parameter in the URL (usually the id)
- find the appropriate record by passing the url parameter to the `.find` method
- convert the record to json and return it
## Update
- Send a PATCH request
- with headers to indicate JSON format
- a method option set to "PATCH"
- and a body containing the data to update the record with
- include a parameter in the URL (usually the id)
- find the appropriate record by passing the url parameter to the `.find` method
- select the key value pairs within the params hash that are on the list of approved attributes for update
- call the update method on the found record and pass the approved attributes for update as an argument
- convert the newly updated record to json and return it
## Delete
- Send a DELETE request
- with headers to indicate JSON format
- and a method option set to "DELETE"
- include a parameter in the URL (usually the id)
- find the appropriate record by passing the url parameter to the `.find` method
- call destroy on the record
- convert the newly deleted record to json and return it (used if we want to enable undo on the frontend)