---
title: 'Teh 3'
---
Teht 3
===
## Table of Contents
[TOC]
## Rest Backend
Toimimaan saaminen vaati jonkin verran säätämistä,varsinkin painikkeiden osalt, mutta onnistui loppujenlopuksi
Koodi
---
```
import React, {Component} from 'react';
import ReactDom from 'react-dom';
import logo from './logo.svg';
import './App.css';
import Button from 'react-bootstrap/Button';
import Contacts from './components/registrations';
import Registrations from './components/registrations';
import { async } from 'q';
class Navbar extends React.Component{
render() {
return (
<div>
<ul id="nav">
<li><a href="App" onClick={()=> Add()}>Add to registrations</a></li>
<li><a href="Remove" onClick={()=> Remove() } >Remove registration</a></li>
<li><a href="Remove" onClick={()=> Get() } >Get a registration</a></li>
<li><a href="Update" onClick={()=> Update() } >Update registration</a></li>
</ul>
</div>
);
}
}
async function Remove() {
var id = prompt ("ID of registration to be removed?")
return fetch('/registration/:' , {
method: 'DELETE',
headers: {'content-type': 'application/json'},
body: JSON.stringify({id: id})
})
.then(res => res.json())
.then(res => console.log(res))
}
async function Get() {
var id = prompt ("ID of registration to get?")
return fetch('/registration/:id', {
method: 'GET',
headers: {'content-type': 'application/json'},
body: undefined
})
.then(res => res.json())
.then(res => console.log(res))
}
async function Update() {
var id = prompt ("ID of registration to be updated?")
var first = prompt ("New first name?")
var last = prompt ("New last Name?")
var age = prompt ("New age?")
return fetch('/registration' , {
method: 'PUT',
headers: {'content-type': 'application/json'},
body: JSON.stringify({age:age,first:first,last:last,id:id})
})
.then(res => res.json())
.then(res => console.log(res))
}
async function Add() {
var first = prompt ("First name?")
var last = prompt ("Last Name?")
var age = prompt ("Age?")
return fetch('/registration' , {
method: 'POST',
headers: {'content-type': 'application/json'},
body: JSON.stringify({first:first,last:last,age:age})
})
.then(response => response.json());
}
class App extends Component {
state = {
registrations: []
}
componentDidMount() {
fetch('/registrations')
.then(res => res.json())
.then((data) => {
data = Array.from(data.data)
this.setState({ registrations: data })
});
}
render() {
return (
<div>
<Navbar></Navbar>
<Registrations registrations={this.state.registrations} />
</div>
)
}
}
export default App;
```
```
const express = require('express');
const mysql = require('mysql');
var bodyParser = require('body-parser');
const app = express();
app.use(bodyParser.urlencoded({
extended: true
}));
app.use(bodyParser.json());
const db = mysql.createConnection({
host :'localhost',
user:'root',
password: '21122',
database: 'db'
});
app.get('/', function (req, res) {
return res.send({ error: true, message: 'hello' })
});
db.connect((err) =>{
if(err){
throw(err);
}
console.log('mysql yhdistetty');
});
app.listen(3000, function () {
console.log('Node app is running on port 3000');
});
module.exports = app;
app.get('/createTable', (req, res) => {
let sql = 'CREATE TABLE IF NOT EXISTS registration(id int AUTO_INCREMENT, first VARCHAR(255), last VARCHAR(255), age INT(11), PRIMARY KEY(id))';
db.query(sql, (err, result) => {
if(err) throw err;
console.log(result);
res.send('registration table created');
});
});
app.post('/registration', function (req, res) {
let first = req.body.first;
let last = req.body.last;
let age = req.body.age;
if (!first) {
return res.status(400).send({ error:true, message: 'Please provide user' });
}
db.query("INSERT INTO registration SET ? ", { first:first,last:last,age:age }, function (error, results, fields) {
if (error) throw error;
return res.send({ error: false, data: results, message: 'New user has been created successfully.' });
});
});
// Update user with id
app.put('/registration', function (req, res) {
let id = req.body.id;
let first = req.body.first;
let last = req.body.last;
let age = req.body.age;
if (!id || !first) {
return res.status(400).send({ error: first, message: 'Please provide user and user_id' });
}
db.query("UPDATE registration SET first = ?, last = ?, age = ? WHERE id = ?", [first,last,age,id], function (error, results, fields) {
if (error) throw error;
return res.send({ error: false, data: results, message: 'user has been updated successfully.' });
});
});
app.delete('/registration/:id', function(req, res) {
let id = req.body.id;
if (!id) {
return res.status(400).send({ error: true, message: 'Please provide registration id' });
}
db.query('DELETE FROM registration WHERE id = ?', [id], function (error, results, fields) {
if (error) throw error;
return res.send({ error: false, data: results, message: 'User has been deleted successfully.' });
});
});
//all registrations
app.get('/registrations', (req, res) => {
db.query('SELECT * FROM registration', function (error, results) {
if (error) throw error;
return res.send({ error: false, data: results, message: 'reqistration list.' });
});
});
app.get('/registration/:id', function (req, res) {
let kaut_id = req.params.id;
console.log('kautid',kaut_id)
if (!kaut_id) {
return res.status(400).send({ error: true, message: 'Please provide reqistration ID' });
}
db.query('SELECT * FROM registration where id=?', kaut_id, function (error, results, fields) {
if (error) throw error;
return res.send({ error: false, data: results[0], message: 'registration details.' });
});
});
/*CORS isn’t enabled on the server, this is due to security reasons by default,
so no one else but the webserver itself can make requests to the server.*/
app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
next();
});
```
## Appendix and FAQ
:::info
**Find this document incomplete?** Leave a comment!
:::
###### tags: `Documentation`