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

标签 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());
        });
    });
  }

最佳答案

您可能喜欢使用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)
});

关于javascript - 如何为post方法制作一个简单的API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46873738/

相关文章:

javascript - JS 不与 asp.net 更新面板一起运行

javascript - 计算绝对定位嵌套子项的高度

javascript - 在 node.js Express 中找不到文件

javascript - 无操作的 HTML 表单(+ CSP 规则无内联 javascript)

javascript - 创建JS MotionGuide无效路径

node.js - 在nodejs中访问user._id

node.js - 同时播放音频

node.js - NPM:永远不要为 npm 包安装嵌套的可选依赖项

node.js - 将图像位图传递给 Azure Face SDK detectorWithStream()

javascript - 使用 Materialize CSS 并尝试在其父元素内的固定位置放置一个按钮但遇到问题