2017 © Pedro Peláez
 

project phprest-swagger-sample-project

Phprest Sample Project.

image

phprest/phprest-swagger-sample-project

Phprest Sample Project.

  • Monday, June 29, 2015
  • by phprest
  • Repository
  • 1 Watchers
  • 1 Stars
  • 22 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 1 Forks
  • 1 Open issues
  • 1 Versions
  • 10 % Grown

The README.md

Phprest Swagger Sample Project

Author Software License, (*1)

Requirements

  • Composer
  • Php 5.4 or latest
  • MySql 5.x

Installation

1. Create project

composer -sdev create-project phprest/phprest-swagger-sample-project /path/to/your/project

2. Configure your database settings

In app/config/orm.php set your database credentials., (*2)

3. Create database

create database tesselboard collate=utf8mb4_unicode_ci;

4. Database migrations

(from the root of your project dir), (*3)

vendor/bin/phprest-service-orm migrations:migrate

5. Database fixtures

(from the root of your project dir), (*4)

vendor/bin/phprest-service-orm fixtures:set

6. Storage dir

(from the root of your project dir), (*5)

Storage dir (app/storage) has to be writeable by the web server., (*6)

Create Api Documentation

(from the root of your project dir), (*7)

vendor/bin/swagger -b public/bootstrap.php -u http://localhost/docs/jsondata api/ -o public/docs/jsondata

Reach your api documentation

http://localhost/docs/index.html, (*8)

List your routes

(from the root of your project dir), (*9)

vendor/bin/phprest routes:get

You should get something like this:, (*10)

Method Route Handler
OPTIONS /{version:any}/camera \Api\Camera\Controller\Camera::options
GET /{version:any}/camera \Api\Camera\Controller\Camera::get
POST /{version:any}/camera \Api\Camera\Controller\Camera::post
GET /{version:any}/temperatures \Api\Temperature\Controller\Temperature::getAll
POST /{version:any}/temperatures \Api\Temperature\Controller\Temperature::post
OPTIONS /{version:any}/temperatures \Api\Temperature\Controller\Temperature::optionsAll
OPTIONS /{version:any}/temperatures/{id:number} \Api\Temperature\Controller\Temperature::options
GET /{version:any}/temperatures/{id:number} \Api\Temperature\Controller\Temperature::get
DELETE /{version:any}/temperatures/{id:number} \Api\Temperature\Controller\Temperature::delete

Api testing (spec tests)

(from the root of your project dir), (*11)

cd specs
npm install
cd ..
vendor/bin/phprest-service-orm fixtures:set
specs/node_modules/jasmine-node/bin/jasmine-node --verbose specs/tests

Tips

  • Separate your docs to an individual vhost
  • Use API Blueprint for documentation instead of Swagger
    • so you can eliminate your inner code API documentation

Nginx sample configuration

server {
    listen 80;
    server_name localhost;

    root /var/www/application/public;
    index index.php;

    location / {
        try_files $uri $uri/ @rewrite;
    }

    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location @rewrite {
        rewrite ^ /index.php;
    }

    error_log /var/log/nginx/application_error.log;
}

The Versions