Thursday, 25 May 2017

axios.get returns errors, while router.get works just fine

I'm having trouble getting info from my own database through axios. I have no problems getting it through express router and have no problems downloading data from other public APIs, tested on pokeapi.co/api/v2... . Here's the code:

const express = require('express');
const router = express.Router();
const app = express();
const cors = require('cors');
const bodyParser = require('body-parser');
const axios = require('axios');

const monk = require('monk');
const db = require('monk')('localhost/fitness-log');
const users = db.get('users');

app.use(cors());
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true}));

app.use('/api/v1', router);

/*
router.get('/listusers', (req, res) => {
  users.find()
    .then(users => res.json(users))
});
*/
axios.get('http://localhost:3001/api/v1/listusers')
  .then(res => users.find())
  .catch(console.error)
/*
axios.post('localhost:3001/api/v1/adduser')
  .then(res => res.data)
  .then(user => users.insert(user))
  .catch(console.error)

/*
router.post('/adduser', (req, res) => {
  users.insert(req.body, (err, result) => {
    res.send(
      (err === null) ? { msg: req.body } : { msg: err }
    );
  });
});
*/

router.delete('/deleteuser/:nickname', (req, res) => {
  users.remove({ 'nickname' : req.params.nickname }, err => {
    res.send((err === null) ? { msg: '' } : { msg: 'error: ' + err});
  });
});

/* axios.get('/listusers')
  .then(res => {
    users.find({}, {fields: ['_id','nickname']})
  })
  .then(users => res.json(users))
  .catch(console.error);

axios.post('/adduser')
  .then(res => res.data)
  .then(res => users.insert(res))
  .catch(console.error);
*/
app.listen(3001, () => console.log("Server running at 3001"));

And the errors depending on which addresses I use (http:192.168.0.248:3001/api/v1/listusers or localhost:3001/api/v1/listusers or just /listusers:

Server running at 3001
(node:5934) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 2): Error: Request failed with status code 404

Second:

Server running at 3001
{ Error: connect EINVAL 0.0.11.185:80 - Local (0.0.0.0:0)
    at Object.exports._errnoException (util.js:1018:11)
    at exports._exceptionWithHostPort (util.js:1041:20)
    at connect (net.js:880:16)
    at net.js:1009:7
    at GetAddrInfoReqWrap.asyncCallback [as callback] (dns.js:62:16)
    at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:81:10)
  code: 'EINVAL',
  errno: 'EINVAL',
  syscall: 'connect',
  address: '0.0.11.185',
  port: 80,
  config: 
   { adapter: [Function: httpAdapter],
     transformRequest: { '0': [Function: transformRequest] },
     transformResponse: { '0': [Function: transformResponse] },
     timeout: 0,
     xsrfCookieName: 'XSRF-TOKEN',
     xsrfHeaderName: 'X-XSRF-TOKEN',
     maxContentLength: -1,
     validateStatus: [Function: validateStatus],
     headers: 
      { Accept: 'application/json, text/plain, */*',
        'Content-Type': 'application/x-www-form-urlencoded',
        'User-Agent': 'axios/0.16.1' },
     method: 'post',
     url: 'localhost:3001/api/v1/adduser',
     data: undefined },
  response: undefined }

Third:

Server running at 3001
{ Error: Request failed with status code 404
    at createError (/home/mmsmsy/nodejs/fitness-log-backend/node_modules/axios/lib/core/createError.js:15:15)
    at settle (/home/mmsmsy/nodejs/fitness-log-backend/node_modules/axios/lib/core/settle.js:18:12)
    at IncomingMessage.handleStreamEnd (/home/mmsmsy/nodejs/fitness-log-backend/node_modules/axios/lib/adapters/http.js:191:11)
    at emitNone (events.js:91:20)
    at IncomingMessage.emit (events.js:185:7)
    at endReadableNT (_stream_readable.js:974:12)
    at _combinedTickCallback (internal/process/next_tick.js:80:11)
    at process._tickCallback (internal/process/next_tick.js:104:9)
  config: 
   { adapter: [Function: httpAdapter],
     transformRequest: { '0': [Function: transformRequest] },
     transformResponse: { '0': [Function: transformResponse] },
     timeout: 0,
     xsrfCookieName: 'XSRF-TOKEN',
     xsrfHeaderName: 'X-XSRF-TOKEN',
     maxContentLength: -1,
     validateStatus: [Function: validateStatus],
     headers: 
      { Accept: 'application/json, text/plain, */*',
        'Content-Type': 'application/x-www-form-urlencoded',
        'User-Agent': 'axios/0.16.1' },
     method: 'post',
     url: 'http://192.168.0.248:3001/api/v1/adduser',
     data: undefined },
  response: 
   { status: 404,
     statusText: 'Not Found',
     headers: 
      { 'x-powered-by': 'Express',
        'access-control-allow-origin': '*',
        'content-security-policy': 'default-src \'self\'',
        'x-content-type-options': 'nosniff',
        'content-type': 'text/html; charset=utf-8',
        'content-length': '154',
        date: 'Thu, 25 May 2017 13:10:46 GMT',
        connection: 'close' },
     config: 
      { adapter: [Function: httpAdapter],
        transformRequest: [Object],
        transformResponse: [Object],
        timeout: 0,
        xsrfCookieName: 'XSRF-TOKEN',
        xsrfHeaderName: 'X-XSRF-TOKEN',
        maxContentLength: -1,
        validateStatus: [Function: validateStatus],
        headers: [Object],
        method: 'post',
        url: 'http://192.168.0.248:3001/api/v1/adduser',
        data: undefined },
     request: 
      ClientRequest {
        domain: null,
        _events: [Object],
        _eventsCount: 5,
        _maxListeners: undefined,
        output: [],
        outputEncodings: [],
        outputCallbacks: [],
        outputSize: 0,
        writable: true,
        _last: true,
        upgrading: false,
        chunkedEncoding: false,
        shouldKeepAlive: false,
        useChunkedEncodingByDefault: true,
        sendDate: false,
        _removedHeader: {},
        _contentLength: 0,
        _hasBody: true,
        _trailer: '',
        finished: true,
        _headerSent: true,
        socket: [Object],
        connection: [Object],
        _header: 'POST /api/v1/adduser HTTP/1.1\r\nAccept: application/json, text/plain, */*\r\nContent-Type: application/x-www-form-urlencoded\r\nUser-Agent: axios/0.16.1\r\nHost: 192.168.0.248:3001\r\nConnection: close\r\nContent-Length: 0\r\n\r\n',
        _headers: [Object],
        _headerNames: [Object],
        _onPendingData: null,
        agent: [Object],
        socketPath: undefined,
        timeout: undefined,
        method: 'POST',
        path: '/api/v1/adduser',
        _ended: true,
        _redirectable: [Object],
        parser: null,
        res: [Object] },
     data: '<!DOCTYPE html>\n<html lang="en">\n<head>\n<meta charset="utf-8">\n<title>Error</title>\n</head>\n<body>\n<pre>Cannot POST /api/v1/adduser</pre>\n</body>\n</html>\n' } }



via Mateusz Mysiak

No comments:

Post a Comment