Angular 平台服务器响应自定义 http 状态代码
Angular Platform-Server Respond with custom http status code
我正在使用带有 ExpressJS 的 SSR 平台服务器
我想将找不到页面的 HTTP 状态代码从 200 更改为 404
我创建了一个路由对象如下
[
{ path: '', component: HomeComponent },
{ path: '**', component: NotFoundComponent, pathMatch: 'full' }
]
它在客户端工作正常,但我不知道如何更改 NodeJS 中的状态代码
我尝试抛出错误并在 ExpressJS 中处理它
所以在 NotFoundComponent 中,在 OnInit 中我抛出一个错误,但是 angular 捕获错误并再次得到状态 = 200
有什么想法吗?
我正在使用@nguniversal/express-engine
您可以从 [express-engine] 向您的应用程序注入自定义提供程序
您可以修改渲染结果
你可以处理错误
https://github.com/angular/universal/tree/master/modules/ng-express-engine
但是请求和响应已经注入
https://github.com/angular/universal/blob/master/modules/ng-express-engine/src/main.ts#L66
并且请求和响应是 expressjs 对象
所以你可以这样使用它:
import { RESPONSE } from '@nguniversal/express-engine/tokens'
并在您的控制器或服务中
constructor(.... OtherDependencies....., @Optional() @Inject(RESPONSE) private readonly res: any) { }
以及代码中的某处,例如 ngOnInit
if(this.res) {
this.res.status(404)
}
如果你想停止 angular
return this.res.end();
或者您可以在此处添加任何其他有效的 ExpressJs 资源代码
=======更新=======
这个话题很老Angular-通用变化很大。但是,这个主题仍然有效,没有变化
new Angular expessjs 的通用文档可以在这里找到
Angular Express Engine
我正在使用带有 ExpressJS 的 SSR 平台服务器 我想将找不到页面的 HTTP 状态代码从 200 更改为 404
我创建了一个路由对象如下
[
{ path: '', component: HomeComponent },
{ path: '**', component: NotFoundComponent, pathMatch: 'full' }
]
它在客户端工作正常,但我不知道如何更改 NodeJS 中的状态代码
我尝试抛出错误并在 ExpressJS 中处理它
所以在 NotFoundComponent 中,在 OnInit 中我抛出一个错误,但是 angular 捕获错误并再次得到状态 = 200
有什么想法吗?
我正在使用@nguniversal/express-engine
您可以从 [express-engine] 向您的应用程序注入自定义提供程序 您可以修改渲染结果 你可以处理错误
https://github.com/angular/universal/tree/master/modules/ng-express-engine
但是请求和响应已经注入
https://github.com/angular/universal/blob/master/modules/ng-express-engine/src/main.ts#L66
并且请求和响应是 expressjs 对象
所以你可以这样使用它:
import { RESPONSE } from '@nguniversal/express-engine/tokens'
并在您的控制器或服务中
constructor(.... OtherDependencies....., @Optional() @Inject(RESPONSE) private readonly res: any) { }
以及代码中的某处,例如 ngOnInit
if(this.res) {
this.res.status(404)
}
如果你想停止 angular
return this.res.end();
或者您可以在此处添加任何其他有效的 ExpressJs 资源代码
=======更新=======
这个话题很老Angular-通用变化很大。但是,这个主题仍然有效,没有变化
new Angular expessjs 的通用文档可以在这里找到 Angular Express Engine