IT > stdout.in Ievgen Kuzminov IT blog

Good REST API design - read, learn, create!

restful api

REST API design is still a topic under discussion. I'll try to collect list of resources for web developers who want get deeper into it.

Free e-books

Start with Apigee: Web API Design.

Continue with more advanced topics in Thoughts on RESTful API Design .

Addtional interesting apects are covered in HTTP API Design Guide

To get brief understanding on different aspects of API variations refer to Undisturbed REST. Also it covers some instruments for building and prototyping APIs.

Non free books

If you want even more additional info and "other points of view"

Play

  • Apiary - powerful service to design, prototype, document and test APIs.
  • MuleSoft. Anypoint Platform - Complete platform with API Design Studio for API protyping and documentation.

Specifications / Auto docs

RESTful API concepts are clear, but big and complex app still require more predictable way to organize APIs. People try to find a way to provide standartized way for documenting and organizing REST API protocol.

  • Swagger - is a simple yet powerful representation of your RESTful API. Provides tools and standard to create GUI for API docs exploration and testing.
  • RAML - RESTful API Modeling Language (RAML) makes it easy to manage the whole API lifecycle from design to sharing.
  • JSONAPI - a specification for building apis in JSON. With the aim to make API response data normalized and API self explanatory.

Framework specific


Free site up-time monitoring services

uptime

uptimerobot.com

  • Monitors : 50
  • Interval : 5 min
  • Types : http(s), keyword, ping, port
  • Totally free

That's my choice. Atleast this blog is monitored by uptimerobot.com :)

site24x7.com

  • Monitors : 5 (from 1 location)
  • Interval : 10 min

monitor.us

  • Monitors : unlimited
  • Interval : 30 min

Free uptime monitoring via Google Docs

Very interesting trick with Google Spreadsheets scripting, not sure how long it will be available, so can't rely on it for 100%

Also there are a lot of server performance monitoring sytems with trial/limited features where simple ping uptime monitorung could be optained for free, but that is an overkill at my point of view.

If you have more free or even better services, please write it here in comments !


Try Yii2 with Vagrant VM + Ansible provisioning = Complete readymade virtual server playground

yii vagrant ansible

With nowadays web technologies anybody could try any web product with minimal efforts and completely safe. No more need to install and adjust tons of software, no more fear to ruine your working OS with another one server etc. I was dreaming making sandbox for Yii2 playground with Vagrant and Ansible from the first day I have learned them.
And today is this Day :)

So ... here it is on Github. Go !
And those who is not realy familiar with Vagrant and do not understand what I am talkign about - please read my post about Vagrant, you will love it.

In two words ...

"Try Yii2" provides you with Vagrant file and Ansible provsioning scripts. Vagrant will launch the VirtualBox VM, download OS image, deploy it and then run Ansible. It will set up all needed software inside Linux VM, clone Yii2 project, download test DB and connect it with project. Also Vagrant will modify you hosts file and assign special local domain adresses with VM IP address, so you will be able to access test Yii2 prject by humanreadable local domain name. All these steps will be made completely automatically, just run vagrant up and wait !

Now in details, out of the box you will get...

  • Ubuntu 14.04 64 bit ( + bulk of system soft like mc, curl, etc.)
  • PHP-FPM 5.5 ( + modules intl, gd, xdebug etc.)
  • Nginx 1.6
  • MySQL 5.5
  • Composer
  • phpMyAdmin 4.0
  • Adminer 4.1
  • Redis 2.8 ( + PhpRedis)
  • MongoDB 2.6 ( + php_mongo)
  • PostgreSQL 9.3
  • Sqlite 2.8.17
  • Memcached 1.4 ( + php5_memcached)
  • Imported Sakila DB for playing around
  • And of course Yii2 Advanced Project template imported
  • Local IP loop on Host machine /etc/hosts and Virtual hosts in Nginx already set up too !
  • And... I hope to add even more software in the future

Quick start

It was tested on Ubuntu Linux host machine (But after latest changes, when Ansible was transferred to VM, there is no known issues to run it on Windows)
On other host OSes potentially you will need to change some steps (like the way of Vagrant plugins installation and Terminal usage).
If you have issues on other OSes and have solved it - please send me comments here or on GitHub, to add some solutions to the docs.

Install

  • Virtualbox 4.3+ + VirtualBox Extension Pack
  • Vagrant 1.6+ additional Vagrant modules (optional, but provide full automation) :

  • vagrant plugin install vagrant-hostsupdater

  • vagrant plugin install vagrant-vbguest
  • vagrant plugin install vagrant-cachier

You don't need to have Ansible installed on host machine. It will be installed on VM and self-provisioning will be launched. So it is possible to run everything on Windows machine.

Run

  • Clone this from GitHub
  • Go inside cloned folder (where Vagrantfile is)
  • Run vagrant up.
  • It will start VM creation and Provisioning. Could take some time 15-30 min... Drink coffee and get back for complete virtual server with Yi2 project ready for play !

Read more ...
Ievgen
Kuzminov "iJackUA"
Web Team Lead
at MobiDev (Kharkiv, Ukraine)
Code in Ruby and Elixir, but still love PHP. Explore ES6 and Vue.js. Explore databases, use Ubuntu and MacOS, think about IT people and management

Notes


Ansistrano- ansistrano.deploy and ansistrano.rollback are Ansible Galaxy roles to easily manage the deployment process for scripting applications such as PHP, Python and Ruby. It's an Ansible port for Capistrano.