如何为post方法制作一个简单的API?

时间:2017-10-22 11:52:37

标签: javascript node.js

我在Ionic应用程序中有这个代码,但我不知道如何使用Node.js创建一个API,只能通过使用Node.js将此值发送到服务器。

submitForm() {
    let headers = new Headers(
      {
        'Content-Type': 'application/json',
        'Accept': 'application/json'
      });
    let options = new RequestOptions({ headers: headers });

    let data = JSON.stringify({
      Value1: this.form.value1,
      Value2: this.form.value2,
      Value3: this.form.value3
    });   
    console.log(data);

    let url = 'http://localhost:3000/calculate';
console.log(url);
    return new Promise((resolve, reject) => {
      this.http.post(url, data, options)
        .toPromise()
        .then((response) => {
          console.log('API Response : ', response.status);
          resolve(response.json());
        })
        .catch((error) => {
          console.error('API Error : ', error.status);
          console.error('API Error : ', JSON.stringify(error));
          reject(error.json());
        });
    });
  }

2 个答案:

答案 0 :(得分:2)

您可以使用ExpressJS。以下示例可以帮助您

创建一个名为api的目录,其中包含以下2个文件

在api目录中创建app.js

var http = require('http');
var express = require('express');
var bodyParser = require('body-parser');

var app = express();

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


app.post('/calculate', function(req, res) {
    var data = req.body;
    console.log('Here are your data: ', data);
    res.json({message: 'you posted successfully'});
});


var port = process.env.PORT || 3000;
var server = http.createServer(app);
server.listen(port);
server.on('error', function(){
  console.error('Error')
});
server.on('listening', function(){
  console.log('server started on port ' + port)
});

在api目录中创建package.json文件

{
  "name": "api",
  "version": "1.0.0",
  "private": true,
  "scripts": {
    "start": "node app.js"
  },
  "dependencies": {
    "body-parser": "~1.17.1",
    "express": "~4.15.2"
  }
}

现在打开命令行/终端并通过运行以下命令安装依赖项(您必须转到api目录内)

npm install

现在您只需运行npm startnode app.js

即可运行

你应该谷歌学习和学习,并发布错误/问题的问题

更新:没有任何依赖关系或库但不推荐

最好使用像express,sailsjs等的http框架,但是如果你喜欢使用nodejs,那么下面的例子可以帮助你

var http = require('http');

var port = process.env.PORT || 3000;
var server = http.createServer(function(req, res) {
  var contentType = req.headers['content-type'];
  var rawData = '';
  req.on('data', function (chunk) {
    rawData += chunk;
  });
  req.on('end', function () {
    if(req.method === 'POST' && req.url === '/calculate' && contentType.indexOf('application/json')>-1){
      try {
        const data = JSON.parse(rawData);
        console.log('Your data is here: ', data);
        res.writeHead(200, { 'Content-Type': 'application/json'});
        var result = {message: 'you have posted successfully'}
        res.end(JSON.stringify(result));
      } catch (e) {
        console.error(e.message);
        res.writeHead(400, { 'Content-Type': 'application/json'});
        var result = {message: e.message}
        res.end(JSON.stringify(result));
      }
    } else {
      res.writeHead(404, { 'Content-Type': 'application/json'});
      var result = {message: 'Url not found'}
      res.end(JSON.stringify(result));
    }
  });
});
server.listen(port);
server.on('error', function(){
  console.error('Error')
});
server.on('listening', function(){
  console.log('server started on port ' + port)
});

答案 1 :(得分:1)

我创建了一个示例Node.js项目,该项目使用AJAX和JSON来说明客户端/服务器请求/响应。它“仅需要”'http','path'和'fs'。

它实现了一个'calculate'函数服务器端,并且有一个显示3个输入框和一个'Calculate'按钮的网页。

这是在Github:“https://github.com/bobwirka/NodeClientServer.git

希望这会有所帮助。