ค้นหาเว็บไซต์

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 ไปยังเซิร์ฟเวอร์ของคุณเองและเพิ่มเวลาการตอบสนองของคำขอ