我正在尝试创建一个将在我的前面使用的API
我使用ExpressJs
作为NodeJS
框架作为服务器,使用RethinkDB
作为数据库。
我在执行 API 调用时遇到问题。每次API调用后,始终在我的控制台中收到消息。
错误:Someone asked for the nonwhitelisted file "/users/". If this should be accessible, add it to the static web assets.
我的入口点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 );
} );
API路线。 server.js
中用const users = require( './routes/users' );
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;
答案 0 :(得分:0)
找到了解决方案。
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
# grab data
df = pd.read_csv('sensor_data.csv')
position = df.Counter
status = df.Value
# determine fraction on;
# I will use bincount for this, which only accepts positive arguments
min_pos = position.min()
position -= min_pos
# determine fraction on
counts_on = np.bincount(position[status==1], minlength=position.max()+1)
counts_all = np.bincount(position, minlength=position.max()+1)
fraction_on = counts_on.astype(float) / counts_all
# plot
x = np.arange(min_pos, position.max()+1+min_pos)
fig, ax = plt.subplots(1,1)
ax.bar(x-0.5, fraction_on, width=1., facecolor='gray', edgecolor=None)
ax.set_xlabel('Distance')
ax.set_ylabel(r'Logic Level $\frac{ON}{ON + OFF}$')
28015
更改为app.use( '/users', users );
app.use( '/', users );
(服务器端口)而不是localhost:3000/
(数据库端口)发送请求