Skip to content
Permalink
Browse files
merge commits
  • Loading branch information
aa7401 committed Jul 10, 2017
2 parents 7b0a6ef + b1b6e3b commit b8a005552ec51f3cc083ffc2a7bf77a651f1bd04
Show file tree
Hide file tree
Showing 3 changed files with 88 additions and 23 deletions.
@@ -96,6 +96,32 @@ $ node -v
v8.1.0
```

Over time you will update the version of NodeJS and, as a result will end up with multiple versions installed on your computer. You can check which version are currently install using.
```
$ nvm ls
v5.1.0
-> v7.3.0
v8.1.2
system
default -> 8.1.2 (-> v8.1.2)
node -> stable (-> v8.1.2) (default)
stable -> 8.1 (-> v8.1.2) (default)
iojs -> N/A (default)
```
As you can see there are three versions of nodejs installed and the one currently in use is v7.3.0.We can switch to a different version with `nvm use 5.1.0` for example. In the example above we are using v7.3.0 with the default is set to 8.1.2. The default version can be set using.
```
$ nvm alias default 8.1.2
```
If we no longer need one of the installed versions it can be removed.
```
$ nvm uninstall 5.1.0
Uninstalled node v5.1.0
```
When you update your node version you will also need to update any packages to run under the new version.
```
$ nvm reinstall-packages 8.1.2
```

## Installing a Code Editor

There are plenty of choices when it comes to editors. The examples in this book will use the [Visual Studio Code](https://code.visualstudio.com) editor which is available for all major platforms. If you are looking at other editors then choose one that supports JavaScript and plugins.
@@ -112,8 +138,17 @@ You will be spending a lot of time in the terminal so here is a useful tip. If y
- `code ~/Documents/bookshop/` opens Visual Studio Code with the contents of the directory specified.
- `code .` opens Visual Studio Code with the contents of the _current directory_.

<<<<<<< HEAD
If you are using Ubuntu this works 'out of the box' but if you are using MacOS you will need to edit your `.bash_profile` file located in your home directory. Since this is hidden by default you can open it in **nano** using `nano ~/.bash_profile`. Now add the following line, save the changes and exit.
```
code () { VSCODE_CWD="$PWD" open -n -b "com.microsoft.VSCode" --args $* ;}
```
Close the terminal and re-launch. Now you can open Visual Studio Code using the same commands as Ubuntu.
=======
### Using a Mac for Development

Computers running MacOS are popular with NodeJS developers. MacOS is a flavour of Unix just like Linux and so all of the commands used in this book will work just fine. The biggest issue is the lack of a decent package manager such as the `apt` package manager found on Ubuntu. To get round this you should install the [Homebrew](https://brew.sh) package manager.
```
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
```
>>>>>>> b1b6e3b0242f7c6118d7fe9f5491bd523556dddc
@@ -44,34 +44,32 @@ exports.addBook = function(isbn, callback) {
}
```

## Relational Database

Familiar data storage
## 2 Document Database

Supports complex queries
Stores JavaScript objects

Difficult to scale
Can be queried using JavaScript

Data needs normalising
```javascript
const mysql = require('mysql')
const request = require('request')
### 2.1 Installing MongoDB

const connection = mysql.createConnection({ host: 'xxx', port: '3306', user: 'xxx', password: 'xxx', database: 'xxx' })
There are several ways to access a MongoDB database. You can make use of a cloud provider such as [mLab](https://mlab.com) or you can install the database locally on your development machine.

const sql = 'INSERT INTO books (id, title, authors, description) VALUES (NULL, "The Hobbit, "J.R.R. Tolkien", "Ring found")'
#### 2.1.1 Installing on Ubuntu

connection.query(sql, (err, rows) => {
if (err) callback( Error(`database error: ${err}`) )
return callback(null, rows)
})
```

## Document Database

Stores JavaScript objects
#### 2.1.2 Installing on MacOS

Can be queried using JavaScript
The best way to install it on a Mac is to use the [Homebrew](https://brew.sh) package manager. The installation instructions can be found in the introductory chapter of this book. To install MongoDB
```
brew install mongodb
```
You need to create a data directory and change its permissions before starting the database server.
```
$ mkdir -p /data/db
$ sudo chown -R `id -un` /data/db
$ mongod
```

Mongoose Example.

@@ -109,6 +107,29 @@ if (err) {

Good for modelling relationships

## Relational Database

Familiar data storage

Supports complex queries

Difficult to scale

Data needs normalising
```javascript
const mysql = require('mysql')
const request = require('request')
const connection = mysql.createConnection({ host: 'xxx', port: '3306', user: 'xxx', password: 'xxx', database: 'xxx' })
const sql = 'INSERT INTO books (id, title, authors, description) VALUES (NULL, "The Hobbit, "J.R.R. Tolkien", "Ring found")'
connection.query(sql, (err, rows) => {
if (err) callback( Error(`database error: ${err}`) )
return callback(null, rows)
})
```

## Choosing a Database

Factors:
@@ -3,7 +3,16 @@

The aim of this book is to teach you the principles and practical skills to build useful secure APIs but before we dive into the technical aspects we should take a step back and understand their purpose and how they should work. This chapter is slightly different from the others insofar as you will learn, not how to build an API but _why_ these are written and how they are used. The understanding you gain from this chapter will then help you design and build your own.

## 1 Working with the HTTP Protocol
## 1 Configuring the Sample API

As you explore the features of a RESTful API you will be interacting with the **Bookshop API** which can be found at https://github.coventry.ac.uk/304CEM-1718SEPJAN/bookshop and will need to be downloaded and run on your computer. The following instructions show how to do this on an Ubuntu computer, you will need to adapt these if you are using a different operating system. It is assumed you have already installed a running version of MongoDB. If you have not yet done this, refer to chapter 7 (Data Persistence).

1. Start by cloning the repository into you Documents directory `git clone https://github.coventry.ac.uk/304CEM-1718SEPJAN/bookshop ~/Documents/bookshop`. This will create a `bookshop/` directory which you will need to navigate to using your terminal.
2. The API can run in one of two modes, `development` or `production`, and this is determined by the `NODE_ENV` environment variable. Set this to `development`.
3. Now you can start the API by running the `index.js` script.


## 2 Working with the HTTP Protocol

HTTP is an application protocol designed to support distributed hypermedia systems and is used when developing APIs so it is important that you have a good understanding of this.

@@ -13,16 +22,16 @@ HTTP Headers allow the client to pass additional information with the request an

User agent

### 1.1 The Request
### 2.1 The Request

Request headers

### 1.2 The Response
### 2.2 The Response

Response headers


### 1.3 The User Agent
### 2.3 The User Agent

xxx

0 comments on commit b8a0055

Please sign in to comment.