server

Version, currently master branch1 version
  • master branchlatestAug 2, 2020

github.com/mkdika/kemal-rest-api

Simple REST API example with Kemal

7 stars
0 dependents
License: MIT

Installation

# Add this to your shard.yml
dependencies:
  server:
    github: mkdika/kemal-rest-api
    branch: master

master is a branch, not a release, so this tracks it rather than pinning a version.

Then run:

shards install

shard.yml

Crystal
0.34.0
License
MIT
Author
Maikel Chandika
Target
  • server from src/server.cr

Dependencies

Runtime Dependencies

  • pg*github: will/crystal-pg
  • kemal*github: kemalcr/kemal
  • crecto*github: Crecto/crecto
  • micrate*github: amberframework/micrate
  • spec-kemal*github: kemalcr/spec-kemal

README

Kemal REST API

License: MIT Built with Crystal Build Status

Simple REST API example with Kemal micro web framework, in CRUD use cases.

Features

  • Crecto, Database wrapper and ORM for Crystal.
  • Micrate, database migration tool for Crystal.
  • Database use PostgreSQL.
  • Test specs example.

Endpoints

HTTP MethodPathDescription
GET/api/customersGet all existing customer data
GET/api/customers/:idGet existing customer data by Id
POST/api/customersInsert new customer data
PUT/api/customers/:idupdate existing customer data by Id
DELETE/api/customers/:idDelete existing customer data by Id

Build and run on local

Install Crystal language.

# Clone the project
git clone https://github.com/mkdika/kemal-rest-api.git
cd kemal-rest-api/

# Install related dependencies
shards install

# create environment variable, you can adjust your db connection string
export DB_URL='postgres://postgres:postgres@localhost:5432/kemal_rest_api'

# Run db setup (create db & run migrations)
crystal run src/util/db_setup.cr

# Run all test specs
crystal spec

# Build binary
shards build --production --release

# run the app
./bin/server
# output: [development] Kemal is ready to lead at http://0.0.0.0:3000

# Optionally, run kemal in `production` environmen & custom port
KEMAL_ENV=production ./bin/server 80
# output: [production] Kemal is ready to lead at http://0.0.0.0:80

Contributing

  1. Fork it (https://github.com/mkdika/kemal-rest-api/fork)
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request

Contributors

Copyright and License

Copyright 2020 Maikel Chandika (mkdika@gmail.com). Code released under the MIT License. See LICENSE file.