繁体   English   中英

接受来自其他网站的 POST 请求到 Angular 应用程序

[英]Accept POST request from other website to Angular Application

我想接受其他应用程序对我的 Angular 应用程序的发布请求。

基本上,他们会将客户 ID 列表作为 POST 有效负载发送,我必须在我的 angular 应用程序和渲染 GUI 中处理它。

我尝试在 app.js 中遵循 app.post 方法,但它抛出错误“无法执行 POST”

app.post('/customer', function (req, res) {
    console.log(req.body);
});

这是一个有点尴尬的要求,因为 Angular 是 JavaScript 框架,它不接受 post 请求,因为 post 请求只需要在服务器端处理,而不是在客户端处理。

但是是否有任何解决方法,例如在 Node JS 中接受 post 请求并发送到 angular 应用程序并呈现 UI? 可能是一个愚蠢的想法,所以至少需要一些想法或解决方法。

编辑:=更多信息

我有 Node JS 应用程序,主要是通过 socket.io 获取实时数据馈送。

是的,您需要一个服务器端服务器来接收请求(GET 或 POST),例如 express.js。 如果您为 Angular 和 Express 使用相同的服务器,您对 localhost:3000/api/customer 执行 POST,express 将使用 JSON 或其他内容进行响应。

Angular 是客户端,因此 POST 来自客户端计算机。 您无需担心需要响应哪个客户。

好吧,Angular 是前端框架。 您不能接受来自angualar 的POST 请求。 但是您可以通过使用任何服务器端服务(如 nodejs 或 java)来实现这一点。 您可以使用 nodejs 来做同样的事情。 1. 在 nodejs 中使用 express 或任何其他框架创建服务器端。 2. 然后您的客户必须将他们的客户 ID 或其他数据发布到该服务器上。 3、使用mongodb等数据库来存储数据。 4. 然后,最后您需要使用 GET 请求从您的服务器获取数据。 就这么简单。

就像你最后说的那样,你得到了一个带有 socket.io 的 nodejs 应用程序,很好,当你的客户端发布数据时,你可以通过监听 socket.io 发出的事件来获取实时数据。 然后你可以在你的 angular 应用程序中显示这些数据。 这可以通过 socket.io-client 在 angular 中完成。 但是,请记住,每次重新启动应用程序时,您都必须向服务器发送 GET 请求以再次从数据库中获取数据(如果您正在存储它们),因为 angular 只是一个前端框架。 希望这对你有帮助。 如果您有任何问题,可以发表评论。 我很乐意提供帮助!

您需要使用 Angular 通用。 这是官方指南Angular 通用应用程序

然后在文件 server.ts

您可以通过添加来接受盆请求。

 server.post('/customer', (req, res) => {
         console.log(req.body);

 });

如果你想得到身体,你可以检查这些答案

看到Angular是前端技术,做接收post请求几乎是不可能的。 这是因为 Angular 在默认情况下会创建一个服务器并在“ng serve”上运行它,而您可能真的无权访问该服务器。

但是,在部署应用程序时,您可能需要创建自己的服务器(例如部署到 heroku 时)。 创建 server.js 文件时,您可以处理来自服务器文件的各种 api 调用。

然而,问题在于您的这些请求在您的本地机器上不起作用,因为您刚刚创建的服务器在 localhost 上不起作用。

const PORT = process.env.PORT || 8905;
const path = require('path');
const express = require('express');
const forceSsl = require('force-ssl-heroku');
const app = express();

app.use(forceSsl);
app.use(express.static(__dirname + '/dist/fenix-school'));
app.use(express.json());

app.post('/payment/success', (request, response) => {
  response.json(request.body)
});

app.get('*', (request, response) => {
  console.log('route hit');
  response.sendFile(path.join(__dirname + '/dist/fenix
 school/index.html'));
});

app.listen(PORT, () => console.log(PORT));

在这里,我创建了一个服务器并让它通过返回请求正文来处理发布请求

1

另一方面,这是使用邮递员的帖子请求,并且有效(我在截屏之前清除了网址)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM