typescript - nest.js @Post yanıtın content-type'ını ayarlamak


API'ime bir POST uç noktası uygulamaya çalışıyorum, bu uç nokta çağrıldığında bir HTML dizesi döndürüyor.

Şu anda kodum şöyle görünüyor:

import { Controller, Post } from '@nestjs/common';
@Controller()
export class MyController {
    @Post('/endpoint')
    public create(): string {
        return `
            <!DOCTYPE html>
            …
            </html>`;
    }
}

POST uç noktasına doğru içerik türünü yanıtıyla birlikte göndermesini nasıl söyleyebilirim? Tüm belgeleri araştırdım ama benim için faydalı bir şey bulamadım.

Yardımınız için şimdiden teşekkür ederim

Cevap #1

Cevabı kendim bulabildim. @Post dekoratörünün hemen arkasına sadece @Header dekoratörünü ekledim:

import { Header } from '@nestjs/common'

@Post('/endpoint')
@Header('content-type', 'text/html')
public create(): string {
  //
}

Cevap #2

Başka bir seçenek (Express kullanıldığı varsayılarak), yanıtı gönderirken içerik türünü belirtmektir. Bu, isteği işlerken JSON (veya diğer yanıt türlerini) koşullu olarak döndürmenize olanak tanıyacaktır:

import { Response } from 'express';

@Post('/endpoint')
public create(@Res() res: Response): string {
    // ...
    if (error) {
        return res.status(404).json({message: 'image not found'});
    }
    // ...
    return res.status(200).contentType('text/html').send(document);
}

İlgili makaleler