kemal-rest-api
Version, currently 0.1.65 versions
github.com/blocknotes/kemal-rest-api
Crystal library to create REST API with Kemal
56 stars
0 dependents
License: MIT
Installation
# Add this to your shard.yml
dependencies:
kemal-rest-api:
github: blocknotes/kemal-rest-api
version: ~> 0.1.6Then run:
shards installshard.yml
- Crystal
0.24.1- License
- MIT
- Author
- Mattia Roccoberton <mat@blocknot.es>
Dependencies
Runtime Dependencies
- kemal*github: kemalcr/kemal
Development Dependencies
- db*github: crystal-lang/crystal-dbdev
- mysql*github: crystal-lang/crystal-mysqldev
- sqlite3*github: crystal-lang/crystal-sqlite3dev
- spec-kemal*github: kemalcr/spec-kemaldev
README
# kemal-rest-api [](https://travis-ci.org/blocknotes/kemal-rest-api)
A Crystal library to create REST API with Kemal.
See [examples](https://github.com/blocknotes/kemal-rest-api/tree/master/examples) folder for **mysql**, **sqlite3** and **mongo** samples.
**NOTE**: this is a *beta* version, a lot of features and security improvements need to be implemented actually
## Installation
Add this to your application's `shard.yml`:
```yaml
dependencies:
kemal-rest-api:
github: blocknotes/kemal-rest-api
```
## Usage
```ruby
require "db" # dependency required to use CrystalDbModel
require "sqlite3" # dependency required to use CrystalDbModel - alternatives: crystal-mysql, crystal-pg
require "kemal"
require "kemal-rest-api"
class MyModel < KemalRestApi::Adapters::CrystalDbModel
def initialize
super "sqlite3:./db.sqlite3", "my_table"
end
end
module WebApp
res = KemalRestApi::Resource.new MyModel.new, KemalRestApi::ALL_ACTIONS, prefix: "api", singular: "item"
res.generate_routes!
Kemal.run
end
```
Generated routes:
```
GET /api/items
GET /api/items/:id
POST /api/items
PUT /api/items/:id
DELETE /api/items/:id
```
## KemalRestApi::Resource options
- **json** (*Bool*): form payload as JSON instead of formdata, default = true
- **plural** (*String*): plural name of the model, used for routes, default = *singular* pluralized
- **prefix** (*String*): prefix for all API routes, default = ""
- **singular** (*String*): singular name of the model, default = class model name lowercase
## More examples
See [examples](https://github.com/blocknotes/kemal-rest-api/tree/master/examples) folder.
## Notes
*crystal-db* shard is required only if `KemalRestApi::Adapters::CrystalDbModel` is used.
The proposed adapters are basic implementations, you can create easily a model adapter that responds better to your needs. *prepare_params* is used to adjust the create/update parameters.
## Contributors
- [Mattia Roccoberton](http://blocknot.es) - creator, maintainer, Crystal fan :)
Documentation
Built from the current release. The first visit to a release nobody has asked for starts its build.
Links
This release
- Version
0.1.6- Tagged
- Dec 1, 2018
- Commit
0b252677346c- Crystal
0.24.1- Indexed
- yes
Dependents
No indexed shard depends on this one yet.
Repository
github.com/blocknotes/kemal-rest-api
Metadata
- Created
- Aug 12, 2026
- Updated
- Aug 12, 2026
- Synced
- Aug 12, 2026
- Versions
- 5