A simple example of an API-based web app.
This week we are not doing tests, instead you should make sure all your previous tests are passing, and then you can play with the JStagram example app. For inspiration, here is a list of things you might consider doing in JStagram:
- fix: delete an uploaded file if it isn't an image
- new feature: add paging to the main page to go beyond the first 10 results (use SQL
LIMITandOFFSETaccording to API parameters you define) - new feature: add a per-picture page to show a single picture nicely
- new feature: look for a thumbnail package and process the image into full resolution for viewing and thumbnail for the index page
- new feature if you like databases: make title search full-text - MySQL has fulltext indexes and search functions
To get the example running, you must install the source code and all modules and then run the server from the command line:
- To download the code, either use git (the simplest option):
git clone https://github.com/portsoc/ws_api.git
cd ws_apior download and unpack the zip which on linux can be achieved using
wget https://github.com/portsoc/ws_api/archive/master.zipthen
unzip master.zip
cd ws_api-master- To download any libraries the code uses, type:
npm install-
Install and run MySQL.
- If you're using your VM for this, MySQL is already installed and running.
-
Edit
examples/sql_config.jsonso that your databasehost,userandpasswordproperties are correct.- The defaults should work on your VM.
-
Install the database and tables using:
npm run initsql- If your
hostanduserdiffer from the defaults, you may need to updatepackage.jsonfor theinitsqlscript to work.
- If your
-
Start the server by typing:
npm run foreverThis ensures that if you edit the code (or upload a new version), the server will restart.
- Visit your website.
- If you're on your VM you just need to put your VM's IP address into a browser, or if you're developing on a desktop machine it will be http://127.0.0.1:8080 .
If at all possible, we recommend you use git to download code rather than zips of a repository. This is preferable because if the repo is updated, then syncing those changes requires just one command (git pull) and usually any merging can be done automatically. Git is very powerful and we heartily encourages you to become familiar with it.