V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  ashe  ›  全部回复第 1 页 / 共 1 页
回复总数  2
2023-08-24 13:23:28 +08:00
回复了 rikka 创建的主题 Node.js nestjs 如何优雅地给 response 设置 header?
可以看看类型声明
node_modules/@nestjs/common/decorators/http/route-params.decorator.d.ts

```typescript
/**
* The `@Response()`/`@Res` parameter decorator options.
*/
export interface ResponseDecoratorOptions {
/**
* Determines whether the response will be sent manually within the route handler,
* with the use of native response handling methods exposed by the platform-specific response object,
* or if it should passthrough Nest response processing pipeline.
*
* @default false
*/
passthrough: boolean;
}
```

简单来说你的场景可以这样玩

```typescript
@Post("/world")
getHello(@Res({ passthrough: true }) response: Response) {
response.setHeader("x-hello", "world");
return { msg: "Hello World!" };
}
```

拦截器也能生效

```typescript
@Injectable()
export class RewritePost201To200Interruptor implements NestInterceptor {
intercept(context: ExecutionContext, next: CallHandler) {
const host = context.switchToHttp();
const request: Request = host.getRequest();
const response: Response = host.getResponse();
return next.handle().pipe(
map((data: unknown) => {
if (response.statusCode === HttpStatus.CREATED && request?.method.toUpperCase() === "POST") {
response.status(HttpStatus.OK);
}
return data;
}),
);
}
}
```

客户端也可以直接拿到返回
2018-09-26 16:54:36 +08:00
回复了 fundebug 创建的主题 程序员 注释写得太多了会挨打吗?
让各位见笑了。这幅图的出处是我写的代码。
我不但有写注释的习惯,还有写文档的怪癖。
除了这个注释,我还配了一个上万字的文档..........
图略大。http://alonesuperman.com/statics/imgs/doc.png
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5890 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 13ms · UTC 06:18 · PVG 14:18 · LAX 22:18 · JFK 01:18
Developed with CodeLauncher
♥ Do have faith in what you're doing.