javascript-nodejs代写: 304CEM Web API Development

304CEM

Web API Development

Assignment 1/1 (2016)

During the module you will learn how to use JavaScript to develop full-stack cloud-based web applications. In this assignment you are required to apply these skills to develop a simple API that uses third-party API. The detailed brief can be found on page 2 of this document, the submission information on page 3 and the marking rubric can be found on page 4.

Deadline

The deadline for this assignment is Wednesday 14th December 2016 16:00.

Resit

If you fail to achieve a grade of 40%+ in this assignment you will be required to complete the resit assignment which will be capped at 40%. This will cover a similar skill set and will be released on tbc. The deadline for submitting the resit coursework is Friday 7th July 2017.

Planning

This assignment will take considerable time to complete. You will be given time each week in your labs to both work on it and to ask any questions relating to this. It is vital that you don’t miss these sessions!

The assignment structure closely follows the weekly topics, make sure you start each step whilst the module content is still fresh.

Assignment Brief

You need to develop an advanced RESTful API. The exact topic you choose is entirely up to you however you should ensure that there is data available for you to use via a public API or suitable website. For the higher grades you will need build a simple client (web or smartphone) to show your API in action. You must not base your API on the theme of books.

 

Here are some examples to get you started however you are encouraged to try to find something different.

Weather: http://openweathermap.org/api

Recipes: http://api.bigoven.com

Travel: https://developers.google.com/maps/documentation/directions/

Tourism: https://developers.google.com/places/webservice/search

 

 

Architecture

The diagram below may help you understand the requirements. Notice that any client will interact with your API and that this API should interact with both the third-party API(s)s and with your data persistence solution.

 

 

 

Features

There is a possible minimum feature set that you should implement in order to pass the assignment however for a higher grade you would be expected to go far beyond this:

  1. users should be able to search for items without the need to register or log in
  2. to access any further features, they should be able to register for an account with appropriate validation such as email confirmation.
  3. logged in users should be able to choose from their search results to create a ‘favourites’ list
  4. they should be able to ‘organise’ this list (eg. add notes, delete items, etc.)

Data

Your API will search online data sources such as APIs or websites to obtain relevant data however any results should be persisted within your API. How you persist this data is entirely up to you however you will need to justify your choice(s) based on the features available. Options include persisting the data to the filesystem or using an appropriate database (SQL, document or graph). You should carefully select which data you will be saving from the third-party API(s) and only display and persist this. You will lose marks if you persist everything you get back from the third-party API(s).

Programming Language

This assignment is designed to expose you to a range of tools and frameworks used by industry. On the server you should be using the NodeJS framework and may use any appropriate packages however you will need to justify your choices. You must not use the Express package or the Strongloop tools under any circumstances. Please note that you will get a zero grade if you choose other languages.

 

Submission

This assignment requires you to demonstrate the range of skills and knowledge required by industry and this is reflected in the coursework submission. You are required to submit three components (4 links).

  1. a link to your live API
  2. links to your Git remote (hosted on GitLab)
  3. a link to your reflective video (hosted on YouTube)

Live API

You need to deploy your latest API release on a cloud service such as Heroku so your lecturers can test its functionality. Make sure it is deployed and functional before the assignment deadline and that the deployed version matches the source code you submit (see below).

Source Code

Managing source code is a vital skill if you are to become a successful developer and for this assignment you are required to track your API code and your client code in separate Git repositories and you will be marked on how efficiently you organise this. You will be required to submit links to both your Git remotes hosted on GitLab. Both repositories should include full documentation available through the home page.

To ensure the code can be seen by your lecturers make sure you give them reporter permissions. Their usernames are:

  1. marktyers
  2. c0lin
  3. cu-jianbingma
  4. cu
  5. digehode

Video

Once you have completed the API and the client you need to explain how your API and client work. Rather than writing a report you are required to record a short screencast of 8 min or less. This should cover all the points in the grading criteria and demonstrate your skills and knowledge of the subject. After uploading you must change the video permissions from private to unlisted. This will allow the lecturers to access the video via the link but prevent it being publicly searchable.

Make sure you separately demonstrate the API (using cURL or Postman) and the client and ensure you justify your  choices of language constructs and architecture.

  1. demonstrate your API using cURL or Postman, showing the requests and responses (headers/body). For the highest grades you will also be expected to demonstrate your API integrated into a client such as a website or smartphone app.
  2. demonstrate the back-end persistence showing how the data is stored.
  3. run the unit and acceptance tests on the API explaining code coverage.
  4. Run the linter using the supplied configuration file to demonstrate code quality.

 

 

huax2@uni.coventry.ac.uk

nodejs-4500  21:10:37

qq654321