PetStore 🐢🐱πŸͺ

This is a Go server that implements the PetStoreService API. It's hosted on fly.io, at ps.vanburen.xyz. The source code is at github.com/stefanvanburen/petstore.

Usage

You can interact with the API with plain HTTP requests (via the Connect protocol) with any HTTP client, such as cURL, but buf curl makes it easy:

$ BASE_URL=https://ps.vanburen.xyz/pet.v1.PetStoreService
$ # Create a pet
$ PET_ID=$(buf curl --data '{"name": "Mobin", "petType": "PET_TYPE_CAT"}' "$BASE_URL/PutPet" | jq -r .pet.petId)
$ echo $PET_ID
01GT4XTKXEXY74QD8H575E8NWC

$ # Retrieve a pet
$ DATA="{\"petId\": \"$PET_ID\"}"
$ buf curl --data "$DATA" "$BASE_URL/GetPet" | jq .pet.name
"Mobin"

$ # Delete a pet. :(
$ buf curl --data "$DATA" "$BASE_URL/DeletePet"
{}

You can also use Buf Studio to interact with the API in a much more interactive way.

Implementation details

The server uses the connect-go library to implement the API, with connectrpc/grpcreflect-go adding support for the gRPC server reflection API.

The packages used for interacting with the API are remotely generated - there's no code generation in this repository.

The "database" is completely in memory, so each deploy will wipe out any existing data.