【问题标题】:How to create RestFull api with express and node.js?如何使用 express 和 node.js 创建 RestFul api?
【发布时间】:2020-11-04 19:16:09
【问题描述】:

我对 node 和 express 非常陌生,我阅读了一些文档,但我没有深入了解如何使用 node 创建 rest api,所以使用下面的基本代码我只想创建 get api with express 并返回对 angularjs 的响应工厂方法。我想获得以下帮助和更好的理解。

1- 如何使用 GET api 返回响应?

2- 如果我们有 json 对象,我如何使用 GET api 传递该数据?

app.js

var express = require('express');
var path = require('path');

var app = express();
app.use(express.static('./'));

var server = app.listen(3000, function(){
    var host = server.address().address;
    var port = server.address().port;
    console.log('Example app listening at http',host,port);
});

app.get('/test', function(req, res) {
  res.type('text/plain'); // set content-type
  res.send('i am a beautiful butterfly'); // send text response
});

workerController.js

$scope.getTestData = function(){
        alert('got function working');
        workerFactory.getData().then(function(response){
            var dataResponse = response.data;
            console.log(dataResponse);
        })
    }

workerFactory.js

angular.module('myApp').factory('workerFactory', function ($http) {
    'use strict';
    return {
        getData: function(){
            return $http.get('/test');
        }
    }
});

【问题讨论】:

  • res.send() 或 res.json() 是向 REST 请求发送响应的两种典型方式。您似乎已经在 app.get() 处理程序中这样做了。您还期待或寻找什么?
  • 当我从前端调用 get endpoint /test 时,我没有看到消息“我是一只美丽的蝴蝶”
  • 调用该端点时会得到什么响应?如果您没有收到任何响应,请在您的 getData() 调用中添加一个错误处理程序,以便您查看遇到的错误。
  • 另外,app.use(express.static('./')); 通常是个坏主意,因为这会让人们看到你所有的服务器源文件,甚至像 https 证书(如果存在)这样的东西。您应该创建一个单独的子目录,其中仅包含公开提供的文件,并将 express.static() 指向该子目录。

标签: angularjs node.js express


【解决方案1】:

第二部分,如何传回 JSON 对象。您可以将 API 代码更改为:

app.get('/test', function(req, res) {
  res.json({message: 'i am a beautiful butterfly'}); // send a JSON response
}); 

我正在处理问题的第一部分

【讨论】:

  • 差点忘了,要在 POST 中发送对象,只需在 POST 调用中添加第二个参数,例如return $http.post('/test', objectToSend);
  • 这与OP提供的具体问题和具体代码有什么关系?他们已经有代码来请求和处理路线。他们想知道为什么它不起作用。
  • 原始问题是由 Node 新手发布的,我提供了一种更结构化的方法来控制路由,并在代码中显示它必须是 POST 并写入控制台输入已提供。如果可以用更简单的结构对此进行解释,我们很乐意接受反馈,但我相信它回答了最初的问题。
  • 你为什么告诉 OP 他们必须使用“POST”?他们似乎只是在获取数据。
  • 我将他问题的第二部分解释为他们试图将对象传递给 API。不建议将其作为 GET,但应该是 POST。如果这是对他们所问问题的误解,很高兴更正我的代码
【解决方案2】:

当您对 REST API 有基本了解后,您可以使用此节点模块 https://github.com/swagger-api/swagger-node 用于创建出色的 REST API。

【讨论】:

    【解决方案3】:

    您可以使用 Amplication 获得完整的 REST-full API 代码,它是一个开源代码,只需定义您的数据模型即可生成 Node.js 代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-22
      • 1970-01-01
      • 2019-09-23
      相关资源
      最近更新 更多