簡體   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