• Stars
    star
    312
  • Rank 134,133 (Top 3 %)
  • Language
    PHP
  • License
    MIT License
  • Created almost 9 years ago
  • Updated over 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Slim 3 API skeleton project for Composer

Slim 3 API skeleton

Software License Build Status Coverage

This is Slim 3 API skeleton project for Composer. Project uses Zend Table Gateway and Phinx for database operations, Monolog for logging, and Fractal as a serializer. Vagrant virtualmachine config and Paw project files are included for easy development. The skeleton tries to follow DDD principles.

Install

Install the latest version using composer.

$ composer create-project --no-interaction --stability=dev tuupola/slim-api-skeleton app

Usage

If you have Vagrant installed start the virtual machine.

$ cd app
$ vagrant up

Now you can access the api at https://192.168.50.52/todos

Get a token

$ curl "https://192.168.50.52/token" \
    --request POST \
    --include \
    --insecure \
    --header "Content-Type: application/json" \
    --data '["todo.all"]' \
    --user test:test

HTTP/1.1 201 Created
Content-Type: application/json

{
    "token": "XXXXXXXXXX",
    "expires": 1491030210
}
$ export TOKEN=XXXXXXXXXX

Create a new todo

$ curl "https://192.168.50.52/todos" \
    --request POST \
    --include \
    --insecure \
    --header "Authorization: Bearer $TOKEN" \
    --header "Content-Type: application/json" \
    --data '{ "title": "Test the API", "order": 10 }'

HTTP/1.1 201 Created
ETag: "c39de417d4d1f5fe22d19cad68d672d8"
Last-Modified: Sat, 16 Apr 2016 10:21:50 GMT
Location: /todos/12Cf2ZjVvyu3A
Content-Type: application/json

{
    "data": {
        "uid": "12Cf2ZjVvyu3A",
        "order": 10,
        "title": "Test the API",
        "completed": false,
        "links": {
            "self": "/todos/12Cf2ZjVvyu3A"
        }
    }
}

Get an existing todo

$ curl "https://192.168.50.52/todos/12Cf2ZjVvyu3A" \
    --include \
    --insecure \
    --header "Authorization: Bearer $TOKEN"

HTTP/1.1 200 OK
ETag: "c39de417d4d1f5fe22d19cad68d672d8"
Last-Modified: Sat, 16 Apr 2016 10:21:50 GMT
Content-Type: application/json

{
    "data": {
        "uid": "12Cf2ZjVvyu3A",
        "order": 10,
        "title": "Test the API",
        "completed": false,
        "links": {
            "self": "/todos/12Cf2ZjVvyu3A"
        }
    }
}

Update part of an existing todo

$ curl "https://192.168.50.52/todos/12Cf2ZjVvyu3A" \
    --request PATCH \
    --include \
    --insecure \
    --header "Authorization: Bearer $TOKEN" \
    --header "Content-Type: application/json" \
    --header 'If-Match: "c39de417d4d1f5fe22d19cad68d672d8"' \
    --data '{ "order": 27 }'

HTTP/1.1 200 OK
ETag: "ab6070930158fc8323aa4550aff438b7"
Last-Modified: Sat, 16 Apr 2016 10:27:16 GMT
Content-Type: application/json

{
    "data": {
        "uid": "12Cf2ZjVvyu3A",
        "order": 27,
        "title": "Test the API",
        "completed": false,
        "links": {
            "self": "/todos/12Cf2ZjVvyu3A"
        }
    }
}

Fully update an existing todo

$ curl "https://192.168.50.52/todos/12Cf2ZjVvyu3A" \
    --request PUT \
    --include \
    --insecure \
    --header "Authorization: Bearer $TOKEN" \
    --header "Content-Type: application/json" \
    --header 'If-Match: "ab6070930158fc8323aa4550aff438b7"' \
    --data '{ "title": "Full update", "order": 66, "completed": true }'

HTTP/1.1 200 OK
ETag: "451665ea7769851880f411750bbd873c"
Last-Modified: Sat, 16 Apr 2016 10:28:45 GMT
Content-Type: application/json

{
    "data": {
        "uid": "12Cf2ZjVvyu3A",
        "order": 66,
        "title": "Full update",
        "completed": true,
        "links": {
            "self": "/todos/12Cf2ZjVvyu3A"
        }
    }
}

Delete an existing todo

$ curl "https://192.168.50.52/todos/12Cf2ZjVvyu3A" \
    --request DELETE \
    --include \
    --insecure \
    --header "Authorization: Bearer $TOKEN"

HTTP/1.1 204 No Content

License

The MIT License (MIT). Please see License File for more information.

More Repositories

1

lazyload

Vanilla JavaScript plugin for lazyloading images
JavaScript
8,761
star
2

slim-jwt-auth

PSR-7 and PSR-15 JWT Authentication Middleware
PHP
828
star
3

jquery_chained

Chained Selects for jQuery and Zepto
JavaScript
589
star
4

slim-basic-auth

PSR-7 and PSR-15 HTTP Basic Authentication Middleware
PHP
440
star
5

hagl

Hardware Agnostic Graphics Library for embedded
C
309
star
6

jquery_viewport

Add viewport selectors to jQuery. For example $("img:below-the-fold").something()
HTML
256
star
7

branca-spec

Authenticated and encrypted API tokens using modern crypto
223
star
8

server-timing-middleware

PSR-7 & PSR-15 middleware to add the Server-Timing header
PHP
198
star
9

base62

Base62 encoder and decoder for arbitrary data
PHP
195
star
10

micropython-mpu9250

MicroPython I2C driver for MPU9250 9-axis motion tracking device
Python
146
star
11

cors-middleware

PSR-7 and PSR-15 CORS middleware
PHP
132
star
12

ksuid

K-Sortable Globally Unique IDs for PHP
PHP
103
star
13

branca-js

Authenticated encrypted API Tokens for JavaScript.
JavaScript
94
star
14

php_google_maps

API to help working with Google Static Maps.
PHP
84
star
15

micropython-m5stack

MicroPython Kitchen Sink for M5Stack
Python
81
star
16

avr_demo

Atmel demo code. Does not use any Arduino libraries. I want to learn this the hard way (tm).
Makefile
80
star
17

slim-image-resize

Image Resize Middleware for Slim Framework
PHP
60
star
18

branca-php

Authenticated and encrypted API tokens using modern crypto
PHP
52
star
19

base58

Base58 encoder and decoder for arbitrary data
PHP
51
star
20

esp_video

Proof of concept video player for ESP32 boards
C
48
star
21

hagl_esp_mipi

ESP32 MIPI DCS abstraction layer for the HAGL graphics library
C
48
star
22

pybranca

Authenticated Encrypted API Tokens for Python.
Python
47
star
23

instrument

PHP application instrumentation toolkit
PHP
44
star
24

hagl_pico_mipi

Raspberry Pi Pico MIPI DCS absraction layer for the HAGL graphics library
C
44
star
25

esp_effects

Old school demo effects for ESP32
C
42
star
26

whereami

Common PHP interface for wifi positioning services
PHP
34
star
27

slim-facebook

Boilerplate Facebook application with Slim, Eloquent and Facebook API.
JavaScript
33
star
28

demo_code

Miscallenous demo code.
JavaScript
32
star
29

axp192

Platform agnostic I2C driver for AXP192 power system management IC
C
31
star
30

esp_examples

The mandatory ESP-IDF (ESP32) examples repository
C
30
star
31

jquery_filestyle

jQuery plugin for styling file input elements.
JavaScript
28
star
32

base85

Base85 encoder and decoder for arbitrary data
PHP
27
star
33

jquery_dictionary

Spotlight searchable offline jQuery API documentation for OS X.
25
star
34

trilateration

Trilateration for PHP
PHP
24
star
35

pico_effects

Old school demo effects for Raspberry Pi Pico
C
23
star
36

pcf8563

Platform agnostic I2C driver for PCF8563 RTC
C
22
star
37

esp_software_i2c

Software I2C driver for ESP-IDF (ESP32)
C
22
star
38

witchcraft

Opionated PHP magic methods as traits for PHP 5.4+
PHP
21
star
39

micropython-mpu6886

MicroPython I2C driver for MPU6886 6-axis motion tracking device
Python
20
star
40

micropython-ili934x

MicroPython SPI Driver for ILI934X Series Based TFT / LCD Displays
Python
18
star
41

http-factory

Lightweight autodiscovering PSR-17 HTTP factories
PHP
17
star
42

wolf_assets

Mephisto style assets management for Wolf CMS. This plugin is currently unmaintained. Let me know if you want to take over.
PHP
17
star
43

php-docker-k8s

Examples how to run PHP with Docker and Kubernetes
PHP
16
star
44

flat-ui-theme

Flat UI theme for TextMate 2 and Sublime Text
15
star
45

sdl2_effects

Old school demo effects with HAGL and SDL2
C
14
star
46

embedded-fonts

FONTX fonts for embedded projects
C
14
star
47

base32

Base32 encoder and decoder for arbitrary data
PHP
13
star
48

instrument-middleware

PSR-7 Middleware for instrumenting PHP applications
PHP
11
star
49

slim-todo-backend

Slim 3 + Spot example for todobackend.com
PHP
11
star
50

slim-skeleton

Slim 3 + Datamapper + Monolog + Plates project for Composer
PHP
11
star
51

callable-handler

Compatibility layer between PSR-7 double pass and PSR-15 middlewares
PHP
10
star
52

bm8563

Platform agnostic I2C driver for BM8563 RTC
C
9
star
53

hagl_sdl2

SDL2 abstraction layer for the HAGL graphics library
C
9
star
54

branca-middleware

PSR-7 and PSR-15 Branca token authentication middleware
PHP
9
star
55

micropython-examples

The mandatory various experiments with MicroPython repository
Python
9
star
56

micropython-lis2hh12

MicroPython I2C driver for LIS2HH12 3-axis accelerometer
Python
9
star
57

wolf_dashboard

Provides simple admin dashboard to Wolf CMS.
PHP
9
star
58

branca-elixir

Secure alternative to JWT. Authenticated encrypted API tokens for Elixir.
Elixir
8
star
59

frog_jquery

Add jQuery to Frog CMS admin interface.
PHP
8
star
60

jquery_jeditable_wysiwyg

Wysiwyg input for Jeditable.
JavaScript
8
star
61

wolf_funky_cache

Funky cache plugin for Wolf CMS
PHP
7
star
62

beeper

Generic paginator for PHP 7.1+
PHP
7
star
63

jquery_jeditable_markitup

Universal markup editor for Jeditable.
7
star
64

axp173

Platform agnostic I2C driver for AXP173 power system management IC
C
6
star
65

triple-a

Alternative AVR (Arduino) Library
C
6
star
66

esp_gfx

HAGL speed tests for ESP32 boards
C
6
star
67

axp202

Platform agnostic I2C driver for AXP202 PMU
C
6
star
68

wolf_first_child

Redirect to first child page behaviour for Wolf CMS.
PHP
6
star
69

php_record

Simple Active Record implementation in PHP.
PHP
6
star
70

esp_twatch2020

Kitchen sink project for T-Watch 2020 and ESP-IDF
C
6
star
71

micropython-gnssl76l

MicroPython I2C driver for Quectel GNSS L76-L (GPS)
Python
6
star
72

rack-facebook-method-fix

Rack middleware to fix Facebook always POST problem.
Ruby
6
star
73

rack-funky-cache

Funky caching for Rack based applications
Ruby
5
star
74

frog_email_template

Provides form mailer backend to Frog CMS. This code is no longer maintained. Please go to: https://github.com/dajare/wolf_email_template
PHP
5
star
75

mephisto_sitemap

Mephisto plugin which implements (Google, MSN, Yahoo ) Sitemap protocol.
Ruby
5
star
76

trytes

Trytes encoder and decoder for arbitrary data
PHP
4
star
77

wolf_jquery_ui

Add jQuery UI to Wolf CMS admin interface.
PHP
4
star
78

em-websocket-server

Simple websocket server with EventMachine
Ruby
4
star
79

esp_i2c_helper

ESP I2C master HAL for hardware agnostic I2C drivers
C
4
star
80

screenshot

Full size website screenshots with Sinatra.
JavaScript
4
star
81

pico_gfx

HAGL speed tests for Rasrpberry Pi Pico boards
C
4
star
82

hagl_esp_solomon

ESP32 Solomon HAL for the HAGL graphics library
C
4
star
83

esp_mipi

Low level MIPI DCS compatible display driver for ESP-IDF
C
4
star
84

hagl_gd

GD HAL for the HAGL graphics library
C
3
star
85

fontx_tools

C
3
star
86

gd32v_effects

Old school demo effects for GD32V
C
3
star
87

slim-fake-mcrypt

Fake PHP mcrypt extension to enable installing Slim 2.3.* with Composer
3
star
88

dbal-psr3-logger

PSR-3 Logger for Doctrine DBAL
PHP
3
star
89

ulid

Universally Unique Lexicographically Sortable Identifier
PHP
3
star
90

corelocation

PHP implementation of Apple location services protocol
PHP
3
star
91

rack-lazy-load

Companion Rack middleware for Lazy Load jQuery plugin.
Ruby
2
star
92

hagl_gd32v_mipi

GD32V MIPI DCS HAL for the HAGL graphics library
C
2
star
93

esp_m5stick

Kitchen sink project for M5StickC and ESP-IDF
C
2
star
94

appelsiini.net

Sources and build files for my personal blog.
HTML
2
star
95

madgwick-backup

Backup of Sebastian Madgwick's original LGPL licensed sensor fusion algorithm
C
2
star
96

branca-cli

Command line tool for encoding, decoding and inspecting Branca tokens
JavaScript
2
star
97

wolf_jquery_tools

Add jQuery Tools to Wolf CMS admin interface.
PHP
2
star
98

arduino_xylophone

Awesome christmas xylophone done with Arduino and Sinatra.
JavaScript
1
star
99

messente

An object-oriented Ruby wrapper for the Messente API.
Ruby
1
star
100

gd32v_gfx

HAGL speed tests for GD32V boards
C
1
star