programing

요청 본문 유형을 요청과 호환되도록 만드는 방법Initior Body노드 페치를 사용할 때 초기화?

sourcejob 2023. 6. 8. 19:37
반응형

요청 본문 유형을 요청과 호환되도록 만드는 방법Initior Body노드 페치를 사용할 때 초기화?

저는 제 nodejs 프로젝트에 Typescript를 사용하기 시작했습니다.일부 외부 API에 액세스하기 위해 노드페치를 사용하여 요청합니다.PUT 요청을 설정하는 동안 지정된 본문을 유형에 할당할 수 없다는 오류가 표시됩니다.RequestInit:

오류:

Error:(176, 28) TS2345:Argument of type '{ headers: Headers; method: string; body: MyClass; }' is not assignable to parameter of type 'RequestInit'.
  Types of property 'body' are incompatible.
    Type 'MyClass' is not assignable to type 'BodyInit'.
      Type 'MyClass' is not assignable to type 'ReadableStream'.
        Property 'readable' is missing in type 'MyClass'.

내 클래스:

class MyClass {
  configId: string;
  adapterType: string;
  address: string;

  constructor(configId: string, adapterType: string, address: string) {
    this.configId = configId;
    this.adapterType = adapterType;
    this.address = address;
  }

  // some methods
}

호출:

let body = new MyClass("a", "b", "c")
let url = config.url + "/dialog/" + dialogId
let headers = new Headers()
// Append several headers

let params = {
  headers: headers,
  method: "PUT",
  body: body
}

return new Promise((resolve, reject) => {
  Fetch(url, params) // <-- error is shown for params variable
    .then(res => {
      // Do stuff
      resolve(/*somevalue*/)
    })
}

바디 오브젝트를 호환성 있게 하려면 어떻게 해야 합니까?

당신은 당신의 몸을 끈으로 묶어야 합니다.

let params: RequestInit = {
  headers: headers,
  method: "PUT",
  body: JSON.stringify(body)
}

나는 두 가지 가능한 접근법을 생각할 수 있습니다. 하나는 특정한 방법으로 헤더를 설정하는 것입니다.body유형으로 해결할 수 있습니다.

다른 생각은 클래스의 인스턴스가 적절한 신체 유형이 아닐 수도 있다는 것입니다.끈으로 묶을 수 있습니까?

업데이트: 요청에 이상한 오류가 발생했습니다.또한 다음과 같이 옵션 개체의 유형('params'라고 함)을 지정하여 해결했습니다.

let params: RequestInit = {
  ...
}

나는 수입해야 했습니다.RequestInit부터node-fetch내장된 스크립트 1을 사용하는 것보다.

예.

다음 항목:

import fetch, { RequestInit } from 'node-fetch'

let params: RequestInit = {
  headers: headers,
  method: "PUT",
  body: JSON.stringify(body)
}

항목이 아님:

import fetch from 'node-fetch'

let params: RequestInit = {
  headers: headers,
  method: "PUT",
  body: JSON.stringify(body)
}

언급URL : https://stackoverflow.com/questions/43997163/how-to-make-request-body-type-compatible-with-requestinit-or-bodyinit-when-using

반응형