我们正在使用angular 5.2.8 with nguniversal / express-engine 5.0.0-beta.6,我们正在使用外部支付服务。支付系统需要将表单发布到其URL并具有callbackURL的输入。
来自该请求的回调向我们发回带有数据的POST请求。我们需要使用用户凭据将数据发布到我们的后端。我们无法接收邮件请求。
我已经为解决方案尝试了一些选项,但到目前为止它们都没有工作:
我需要将回调帖子的内容发送到客户端,或者将用户凭据传递给服务器端。
答案 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
}