Skip to content
This repository has been archived by the owner on Jun 19, 2023. It is now read-only.

blocknotes/kemal-rest-api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

c9a3f2d · Jun 19, 2023

History

50 Commits
Oct 12, 2017
Dec 1, 2018
Dec 1, 2018
Jan 20, 2017
Oct 7, 2017
Jan 15, 2017
Jun 19, 2023
Dec 1, 2018

Repository files navigation

kemal-rest-api - PROJECT UNMAINTAINED

This project is not maintained anymore

If you like it or continue to use it fork it please.



A Crystal library to create REST API with Kemal.

See 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:

dependencies:
  kemal-rest-api:
    github: blocknotes/kemal-rest-api

Usage

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 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