typescript - Nestjs เรียก POST ในคอนโทรลเลอร์จาก GET ในคอนโทรลเลอร์อื่น
ฉันกำลังทำการเรียก API แบบ GET จาก Controller หนึ่ง ตามผลลัพธ์ที่ได้รับ ฉันจำเป็นต้องเรียกอีก Controller ด้วยวิธี POST
ฉันมีปัญหาในการทำสิ่งนั้นโดยใช้ redirect(), ฉันได้รับข้อความ "ไม่สามารถรับ" เพราะการเรียก API ครั้งที่สองเป็นวิธี POST
async retrieveOrgUnit(@RequestHeader(HeadersDto) headers: HeadersDto, @Param() params: OrganizationGetUnitDto, @Body() offerDto, @Res() response: Response, cpg: ChargingProvisioningGateway) {
let result = await cpg.organizationUnit.getOrgUnitProfile({
path: {
customerExternalId: params.orgId,
orgUnitExternalId: params.orgId
},
body: {}
}).then(async res => {
res.status
if( res.data.status === 22){
**await response.redirect(307, '/offer')**
}
return res.data
}).catch(err => {
Logger.log('Failed, Error: ' + err);
return err.status ? err.status : err.data ? err.data : err
})
ถ้าคุณดูใน response.redirect(307, '/offer') ผมกำลังเรียกคอนโทรลเลอร์อีกอันที่กำลังเรียก POST API แต่เมธอดกลายเป็น GET มีคำแนะนำไหมว่าจะทำยังไง?
คำตอบ #1
การเปลี่ยนเส้นทางจะปฏิบัติตามกฎพิเศษ แต่โดยทั่วไปคุณไม่สามารถเปลี่ยน จาก GET เป็น HTTP method อื่นได้ เพียงแค่เปลี่ยนจาก HTTP method อื่น ไป เป็น GET เท่านั้น ผมขอแนะนำให้แค่ฉีดคลาสบริการที่เกี่ยวข้องกับเส้นทางไปยังคลาสปัจจุบันนี้ และเรียกใช้บริการโดยตรงแทนการส่งคำขอ HTTP ไปยังเซิร์ฟเวอร์ของคุณเองและเพิ่มเวลาการตอบสนองของคำขอ