有没有办法在角度通用中从客户端向服务器发送数据?

时间:2018-03-30 10:37:55

标签: angular angular5 angular-universal

我们正在使用angular 5.2.8 with nguniversal / express-engine 5.0.0-beta.6,我们正在使用外部支付服务。支付系统需要将表单发布到其URL并具有callbackURL的输入。

来自该请求的回调向我们发回带有数据的POST请求。我们需要使用用户凭据将数据发布到我们的后端。我们无法接收邮件请求。

我已经为解决方案尝试了一些选项,但到目前为止它们都没有工作:

  • 在express中收听帖子,然后将数据传输到angular
  • 尝试向服务器发送Cookie或用户信息,以便向我们的后端发送服务器到服务器请求。

我需要将回调帖子的内容发送到客户端,或者将用户凭据传递给服务器端。

2 个答案:

答案 0 :(得分:0)

在Angular Universal项目中,在server.ts文件中,我们编写以下类型的代码。

因此,基本上,我们将浏览器重定向到index.html以获取所有Angular路由。但是,以/api/*开头的网址将被排除在API下方。您似乎需要使用以/api/*开头的回调网址以及需要使用HTTP POST API来处理呼叫的回调网址。

app.get('/api/*', (req, res) => {

});

// Server static files from /browser
app.get('*.*', express.static(join(DIST_FOLDER, 'browser')));

// All regular routes use the Universal engine
app.get('*', (req, res) => {
  res.render(join(DIST_FOLDER, 'browser', 'index.html'), { req });
});

答案 1 :(得分:0)

你的第一种方法应该有效。要真正通用,您可以提供快速请求玩具角度通用应用程序,以便请求的值可以访问它的组件/服务

<强> server.ts

app.engine('html', (_, options, callback) => {


  renderModuleFactory(AppServerModuleNgFactory, {
    // Our index.html
    document: template,
    url: options.req.path,
    extraProviders: [
      {
        provide: 'httpRequest',
        useValue: options.req,

      }
    ]
  }).then(html => {

    callback(null, html);
  });
});

//Handle your post
app.post('/yourpostUrl', (req, res) => {

  res.render(join(DIST_FOLDER, 'browser', 'index.html'), {req});
});

然后提供请求角度侧。不要忘记将其设为可选,以便它不会抛出错误的客户端

<强> component.ts

 constructor(@Optional() @Inject('httpRequest') private httpRequest: any)
  {
      //here you can use httpRequest's valuesy
  }