2017-05-10 3 views
0

J'essaye de créer une API qui sera utilisée sur mon front.
J'utilise ExpressJs comme NodeJS cadre pour le serveur et RethinkDB comme base de données.
Je rencontre un problème lors de l'appel API. Toujours recevoir des messages dans ma console après chaque appel d'API.
Création de l'API ExpressJs + RethinkDB

Erreur: Someone asked for the nonwhitelisted file "https://stackoverflow.com/users/". If this should be accessible, add it to the static web assets.

Mon entrypoint server.js

'use strict' 

const express = require('express'); 
const logger = require('morgan'); 
const bodyParser = require('body-parser'); 
const cors = require('cors'); 
const helmet = require('helmet'); 
require('dotenv').config(); 

const app = express(); 

app.use(logger('dev')); 
app.use(bodyParser.urlencoded({ 
    extended: false 
})); 
app.use(bodyParser.json()); 
app.use(cors()); 
app.use(helmet()); 

const users = require('./routes/users'); 
const connect = require('./lib/connect'); 

app.use(connect.connect); 
app.use('/users', users); 
app.use(connect.close); 

app.use((error, request, response, next) => { 
    response.status(error.status || 500); 
    response.json({ 
     error: error.message 
    }); 
}); 

app.use((request, response, next) => { 
    let error = new Error('Not Found'); 
    error.status = 404; 
    response.json(error); 
}); 

var server = app.listen(3000, function() { 
    var host = server.address().address; 
    var port = server.address().port; 

    console.log('App is listening on http://%s:%s', host, port); 
}); 

itinéraires API. Fichier utilisé dans server.js comme const users = require('./routes/users'); pour app.use('/users', users);

'use strict'; 

const r = require('rethinkdb'); 
const router = require('express').Router(); 
const connect = require('../lib/connect'); 

router.post('/users',(request, response) => { 
    let user = Object.assign({},{ 
     'email': request.body.email, 
     'name': request.body.name, 
     'password': request.body.password 
    }); 

    r.db('Planner').table('users') 
     .insert(user) 
     .run(request._rdb) 
     .then(cursor => cursor.toArray()) 
     .then(result => { 
      response.send(result) 
     }) 
     .catch(error => response.send(error)); 
}); 

router.get('/users', (request, response) => { 
    r.db('auth').table('users') 
     .run(request._rdb) 
     .then(cursor => cursor.toArray()) 
     .then(result => { 
      response.send(result); 
     }) 
     .catch(error => response.send(error)); 
}); 

router.put('/users/:user_id', (request, response) => { 
    let user_id = request.params.user_id; 

    r.db('auth').table('users') 
     .get(user_id) 
     .update({ 
      'email': request.body.email, 
      'name': request.body.name 
     }) 
     .run(request._rdb) 
     .then(cursor => cursor.toArray()) 
     .then(result => { 
      response.send(result); 
     }) 
     .catch(error => response.send(error)); 
}); 

router.delete('/users/:user_id', (request, response) => { 
    let user_id = request.params.user_id; 

    r.db('auth').table('users') 
     .get(user_id) 
     .delete() 
     .run(request._rdb) 
     .then(cursor => cursor.toArray()) 
     .then(result => { 
      response.send(result); 
     }) 
     .catch(error => response.send(error)); 
}); 

module.exports = router; 

Répondre

0

trouvé la solution.

  1. changé le port DB à 28015
  2. Changed app.use('/users', users);-app.use('/', users);
  3. Envoi de la demande de localhost:3000/ (port du serveur) au lieu de localhost:28015 (port db)