This is a sample implementation of CRUD (Create, Read, Update, Delete) in Rust
The sample is using MySQL for persistence and provides the following API endpoints via HTTP:
GET /items
- To retrieve a list of all itemsGET /items/:id
- To retrieve a item using its identifierPOST /items
- To create a new itemPUT /items/:id
- To update an existing item using its identifierDELETE /items
- To delete multiple items providing an array of identifiers as payload ({ "ids": []}
)DELETE /items/:id
- To delete an existing item using its identifierSend data to POST /items
and PUT /items/:id
using the following structure:
{
"name": "item name",
// boolean (either true or false)
"active": true
}
spin up
)To run the sample on your local machine, you must have the following software installed:
wasm32-wasi
target for Rust installed (rustup target add wasm32-wasi
)spin up
)To run this sample locally, you can either follow the steps mentioned below or use the corresponding targets specified in the Makefile
.
# 1. Start a MySQL container
## alternatively you can run `make database-up`
docker run -d -e MYSQL_USER=spin \
-e MYSQL_PASSWORD=spin \
-e MYSQL_ROOT_PASSWORD=secure-pw \
-e MYSQL_DATABASE=spin \
-p 3306:3306 --name mysql \
mysql:latest
# 2. Build and Run the database seeding container
## alternatively, you can run `make database-seed`
docker build . -t mysql-seed
# snip
docker run --rm -e MYSQL_PWD=spin --link mysql mysql-seed
# 3. Build the Spin App
## alternatively, you can run `make build`
spin build
# 4. Run the Spin App
## alternatively, you can run `make run`
spin up
At this point, you can invoke the API endpoints mentioned above at http://localhost:3000/