ashe 最近的时间轴更新
ashe

ashe

V2EX 第 352212 号会员,加入于 2018-09-26 12:35:36 +08:00
ashe 最近回复了
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   ·   实用小工具   ·   2660 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 15ms · UTC 06:10 · PVG 14:10 · LAX 22:10 · JFK 01:10
Developed with CodeLauncher
♥ Do have faith in what you're doing.