Create fake REST API in a minute
##Install
Issue following command:
pip install liaar
or with easy_install
:
easy_install liaar
Above commands install all dependecies automatically. Then use following command to run the liaar:
liaar
Then you should see the liaar picture.
##How to use
You should create directories as resources’ namespace and place JSON files inside them as API methods.
Suppose you have following directory structure:
apps
|_ .
|_ ..
|_ blog
|_ .
|_ ..
|_ setting.json
|_ resources
|_ .
|_ ..
|_ users
|_ .
|_ ..
|_ profile.json
And the url would be http://127.0.0.1:1234/blog/v1/users/profile
. In next parts you can read more about resource and application setting JSON file's format.
##Schema
In order to run the application, you should define application’s setting and resources using JSON files. This section shows you the schema of these JSON files.
###setting.json: Application setting
Using this file you can define global properties for the application. The setting.json
can have following properties:
####Mandatory
- version {string} - Version number of application
Following JSON file shows an example of setting.json
:
{
"version": "1"
}
###Application resources
Using this file you define application's resources. This JSON file can have as many as fields you need and each value can be either string
or object
. Following JSON file is an example of a resource:
{
"firstName": "first_name",
"lastName": "last_name",
"username": "user_name"
}
The output of above resource file is:
{
"firstName": "Polk",
"lastName": "Nienow",
"username": "kbogan"
}
If you need a list of values instead of a single value, you can use nested object like following:
{
"firstName": "first_name",
"lastName": "last_name",
"username": "user_name",
"email": {
"liaar_type": "list",
"liaar_count": 3,
"liaar_formatter": "email"
}
}
And then the output of above JSON file would be:
{
"username": "kbogan",
"lastName": "Nienow",
"email": ["darcie.pfannerstill@mohr.com", "barton.elvira@haneoconnell.com", "imills@hotmail.com"],
"firstName": "Polk"
}
Liaar uses Faker library to generate fake data for API methods. You can use all Faker's formatters to produce fake data. Following list shows current available formatters to use in Liaar:
file:
mime_type # video/webm
user_agent:
chrome # Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_8_4) AppleWebKit/5341 (KHTML, like Gecko) Chrome/13.0.803.0 Safari/5341
firefox # Mozilla/5.0 (Windows 95; sl-SI; rv:1.9.1.20) Gecko/2012-01-06 22:35:05 Firefox/3.8
internet_explorer # Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.1)
linux_platform_token # X11; Linux x86_64
linux_processor # x86_64
mac_platform_token # Macintosh; U; PPC Mac OS X 10_7_6
mac_processor # U; PPC
opera # Opera/9.41 (Windows CE; it-IT) Presto/2.9.168 Version/12.00
safari # Mozilla/5.0 (Windows; U; Windows NT 5.1) AppleWebKit/534.34.4 (KHTML, like Gecko) Version/5.0 Safari/534.34.4
user_agent # Mozilla/5.0 (iPod; U; CPU iPhone OS 3_2 like Mac OS X; en-US) AppleWebKit/531.15.3 (KHTML, like Gecko) Version/4.0.5 Mobile/8B119 Safari/6531.15.3
windows_platform_token # Windows 98; Win 9x 4.90
phone_number:
phone_number # (593)652-1880
miscelleneous:
random_number # 3438
random_digit # 3
boolean # True
country_code # BB
language_code # fr
locale # pt_GN
md5 # ab9d3552b5c6e68714c04c35725ba73c
null_boolean # True
sha1 # 3fc2ede28f2596050f9a94c15c59b800175409d0
sha256 # f06561a971d6b1306ecef60be336556d6de2540c2d0d2158f4d0ea3f212cd740
internet:
company_email # ggreenfelder@ortizmedhurst.com
domain_name # mayer.com
domain_word # gusikowski
email # gbrakus@johns.net
free_email # abbey60@yahoo.com
free_email_domain # hotmail.com
ipv4 # 81.132.249.71
ipv6 # 4c55:8c8b:54b5:746d:44ed:c7ab:486a:a50e
safe_email # amalia49@example.com
slug # TypeError
tld # net
uri # http://www.parker.com/
uri_extension # .asp
uri_page # terms
uri_path # explore/list/app
url # http://dubuque.info/
user_name # goodwin.edwin
company:
bs # maximize end-to-end infrastructures
catch_phrase # Multi-tiered analyzing instructionset
company # Stanton-Luettgen
company_suffix # Group
date_time:
am_pm # AM
century # IX
date # 1985-02-17
date_time # 1995-06-08 14:46:50
date_time_ad # 1927-12-17 23:08:46
date_time_between # 1999-08-22 22:49:52
date_time_this_century # 1999-07-24 23:35:49
date_time_this_decade # 2008-01-27 01:08:37
date_time_this_month # 2012-11-12 14:13:04
date_time_this_year # 2012-05-19 00:40:00
day_of_month # 23
day_of_week # Friday
iso8601 # 2009-04-09T21:30:02
month # 03
month_name # April
time # 06:16:50
timezone # America/Noronha
unix_time # 275630166
year # 2002
person:
first_name # Elton
last_name # Schowalter
name # Susan Pagac III
prefix # Ms.
suffix # V
address:
address # 044 Watsica Brooks West Cedrickfort, SC 35023-5157
building_number # 319
city # Kovacekfort
city_prefix # New
city_suffix # ville
country # Monaco
geo_coordinate # 148.031951
latitude # 154.248666
longitude # 109.920335
postcode # 82402-3206
secondary_address # Apt. 230
state # Nevada
state_abbr # NC
street_address # 793 Haskell Stravenue
street_name # Arvilla Valley
street_suffix # Crescent
lorem
paragraph # Itaque quia harum est autem inventore quisquam eaque. Facere mollitia repudiandae
qui et voluptas. Consequatur sunt ullam blanditiis aliquam veniam illum voluptatem.
paragraphs # ['Alias porro soluta eum voluptate. Iste consequatur qui non nam.',
'Id eum sint eius earum veniam fugiat ipsum et. Et et occaecati at labore
amet et. Rem velit inventore consequatur facilis. Eum consequatur consequatur
quis nobis.', 'Harum autem autem totam ex rerum adipisci magnam adipisci.
Qui modi eos eum vel quisquam. Tempora quas eos dolorum sint voluptatem
tenetur cum. Recusandae ducimus deleniti magnam ullam adipisci ipsa.']
sentence # Eum magni soluta unde minus nobis.
sentences # ['Ipsam eius aut veritatis iusto.',
'Occaecati libero a aut debitis sunt quas deserunt aut.',
'Culpa dolor voluptatum laborum at et enim.']
text # Dicta quo eius possimus quae eveniet cum nihil. Saepe sint non nostrum.
Sequi est sit voluptate et eos eum et. Pariatur non sunt distinctio magnam.
word # voluptas
words # ['optio', 'et', 'voluptatem']
##Roadmap
- Allow cross-domain XHR request
- Better error handling
- Add URL format to
setting.json
##Requirements
- Python v2.7
- Twisted v14.0
- Faker v0.4.0
##Thanks
- Mohammad Efazati
- Amir Mohammad Said
- http://investingcaffeine.com/ for Pinocchio picture
Afshin Mehrabani
##License MIT