typescript - nest.js @Post sette innholdstypen for responsen
Jeg prøver å implementere et POST-endepunkt i API-en min, som returnerer en HTML-streng når det kalles.
Koden min ser slik ut for øyeblikket:
import { Controller, Post } from '@nestjs/common';
@Controller()
export class MyController {
@Post('/endpoint')
public create(): string {
return `
<!DOCTYPE html>
…
</html>`;
}
}
Hvordan kan jeg få POST-endepunktet til å sende riktig innholdstype sammen med svaret sitt? Jeg har søkt gjennom all dokumentasjon, men klarte ikke å finne noe som var nyttig for meg.
Takk på forhånd for hjelpen din
Svar #1
Jeg klarte å finne svaret selv. Jeg la bare til @Header-dekoren rett bak @Post-dekoren:
import { Header } from '@nestjs/common'
@Post('/endpoint')
@Header('content-type', 'text/html')
public create(): string {
//
}
Svar #2
Et annet alternativ (forutsatt at Express brukes), er å spesifisere innholdstype når du sender responsen. Dette vil la deg betinget returnere JSON (eller andre responstyper) mens du behandler forespørselen:
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);
}
