在Postgres和NodeJs api中找不到404错误(可能重复)

时间:2017-10-17 09:33:58

标签: javascript node.js postgresql express

我是Nodejs的新手。我正在使用node,express和Postgres DB创建apis。

using System;
using System.IO;
using System.Net;
using System.Net.Http;
using System.Threading.Tasks;

namespace Test
{
    class Program
    {
        static async Task Main(string[] args)
        {
            var server = new AsyncHttpServer(portNumber: 1234);
            await server.Run();
        }

        class AsyncHttpServer
        {
            readonly HttpListener listener;
            const string RESPONSE_TEMPLATE =
                "{{\"RawUrl\":\"{0}\", \"i\":{1}}}";

            public AsyncHttpServer(int portNumber)
            {
                listener = new HttpListener();
                listener.Prefixes.Add(string.Format("http://+:{0}/", portNumber));
            }

            int i = 0;

            async void HandleRequest(HttpListenerContext context)
            {
                Console.WriteLine($"HandleRequest: {context.Request.Url}, {context.Request.RawUrl}, {context.Request.HttpMethod}");

                await Task.Delay(TimeSpan.FromSeconds(1));

                var response = context.Request.RawUrl == "/" ? string.Format(RESPONSE_TEMPLATE, context.Request.Url.ToString(), ++i) : "";

                using (var sw = new StreamWriter(context.Response.OutputStream))
                {
                    await sw.WriteAsync(response);
                    await sw.FlushAsync();
                }
            }

            public async Task Run()
            {
                try
                {
                    listener.Start();

                    while (true)
                    {
                        var ctx = await listener.GetContextAsync();
                        HandleRequest(ctx);
                    }
                }
                catch (Exception e)
                {
                    Console.WriteLine(e);
                }
            }
        }
    }
}

我的桌子和数据库已经创建。我从Postgres CLI检查过。但是当我使用节点main.js运行我的main.js文件时。它开始侦听本地主机上的端口,但是当我触发时,

   const {Pool} = require('pg');



//const connectionString = process.env.DATABASE_URL || 'postgres://localhost:5432/springmvctutorial';

var http = require("http");
var express = require('express');
const router = express.Router();
const app = express();
var bodyParser = require('body-parser');

var apiVersion = '/api/v1/';


const poo = new Pool({
  database: 'springmvctutorial',
  host: 'localhost',
  user: 'postgres',
  password : 'root',
  port: 5432,
  max: 20,
  idleTimeoutMillis: 30000,
  connectionTimeoutMillis: 2000,
})



app.use( bodyParser.json() );       // to support JSON-encoded bodies
app.use(bodyParser.urlencoded({     // to support URL-encoded bodies
  extended: true
}));

//create app server
var server = app.listen(3030,  "localhost", function () {
  var host = server.address().address
  var port = server.address().port
  console.log("Example app listening at http://%s:%s", host, port)
});


router.post('/api/v1/postData', (req, res, next) => {

  poo.connect((err, client, release) => {
    if (err) {
      return console.error('Error acquiring client', err.stack);
    }
    client.query('INSERT INTO items(text, complete) values(1,false)', (err, result) => {
      release();
      if (err) {
        return console.error('Error executing query', err.stack);
      }
      console.log(result.rows);
    });
  });

});

module.exports = router;

它提供404资源未找到错误。

我的邮递员输入是,

   http://127.0.0.1:3030/api/v1/postData

1 个答案:

答案 0 :(得分:2)

尝试这样,我没有测试它,因为我没有在这台机器中拥有环境

const {Pool} = require('pg');
//const connectionString = process.env.DATABASE_URL || 'postgres://localhost:5432/springmvctutorial';
var http = require("http");
var express = require('express');
const app = express();
var bodyParser = require('body-parser');

var apiVersion = '/api/v1/';
const poo = new Pool({
  database: 'springmvctutorial',
  host: 'localhost',
  user: 'postgres',
  password : 'root',
  port: 5432,
  max: 20,
  idleTimeoutMillis: 30000,
  connectionTimeoutMillis: 2000,
})
app.use( bodyParser.json() );       // to support JSON-encoded bodies
app.use(bodyParser.urlencoded({     // to support URL-encoded bodies
  extended: true
}));

//create app server
app.listen(3030,  "localhost", function () {
  var host = server.address().address
  var port = server.address().port
  console.log("Example app listening at http://%s:%s", host, port)
});


app.post('/api/v1/postData', (req, res, next) => {

  poo.connect((err, client, release) => {
    if (err) {
      return console.error('Error acquiring client', err.stack);
    }
    client.query('INSERT INTO items(text, complete) values(1,false)', (err, result) => {
      release();
      if (err) {
        return console.error('Error executing query', err.stack);
      }
      console.log(result.rows);
    });
  });

});