--- title: Request slug: Web/API/Request translation_of: Web/API/Request ---
Fetch API의 Request
는 리퀘스트 리소스를 표현해주는 인터페이스입니다.
{{domxref("Request.Request()")}} 생성자 메서드를 사용하는 것으로, 새로운 Request
오브젝트를 생성할 수 있습니다. 이 인터페이스는 그리 자주 사용되지 않는 것으로 service worker의 {{domxref("FetchEvent.request")}}와 같은 별개의 API와 만나는 경우가 더 잦을 것입니다.
Request
객체를 생성합니다.GET
, POST
같은것들)을 포함합니다.audio
, image
, iframe
)을 포함하고 잇습니다.client
)을 포함하고 있습니다.no-referrer
)를 포함하고 있습니다.cors
, no-cors
, same-origin
, navigate
) 포함하고 있습니다.omit
, same-origin
)를 포함하고 있습니다.follow
, error
, or manual
)를 포함합니다.sha256-BpfBw7ivV8q2jLiT13fxDYAe2tJllusRSZ273h2nFSE=
)을 포함합니다.default
, reload
, no-cache
) 포함합니다.Request
는 {{domxref("Body")}}를 구현하고 있으므로 다음 프로퍼티 또한 사용 가능합니다.
Request
의 복사본을 생성합니다.Request
는 {{domxref("Body")}}를 구현하고 있으므로 다음 프로퍼티 또한 사용 가능합니다.
Note: {{domxref("Body")}} 함수는 한번밖에 실행할 수 없습니다. 두번째부터는 빈 문자열, 혹은 ArrayBuffer이 반환됩니다.
다음의 예시들은 Request를 이용해 스크립트와 같은 디렉터리에 존재하는 사진의 여러가지 정보를 불러오는 방법입니다. Request()
생성자를 사용하여 새로운 Request를 생성하여 몇몇 몇 프로퍼티를 반환합니다.
const myRequest = new Request('http://localhost/flowers.jpg'); const myURL = myRequest.url; // http://localhost/flowers.jpg const myMethod = myRequest.method; // GET const myCred = myRequest.credentials; // omit
{{domxref("GlobalFetch.fetch()")}}의 매개변수에 Request 객체를 전달하는것으로 then 파라미터를 이끌어낼 수 있습니다. 아래는 그에대한 예시입니다.
fetch(myRequest) .then(response => response.blob()) .then(blob => { myImage.src = URL.createObjectURL(blob); });
아래는 Body Payload가 필요한 API 요청을 다루는 예시입니다. Request() 생성자를 사용하여 초기 데이터 및 본문 내용이 포함 된새 요청을 만듭니다.
아래는 Body Payload가 필요한 API 요청을 다루는 예시입니다. Request() 생성자를 사용하여 초기 데이터와 Body의 컨텐츠를 읽어올 수 있습니다.
const myRequest = new Request('http://localhost/api', {method: 'POST', body: '{"foo":"bar"}'}); const myURL = myRequest.url; // http://localhost/api const myMethod = myRequest.method; // POST const myCred = myRequest.credentials; // omit const bodyUsed = myRequest.bodyUsed; // true
Note: Body의 타입은 {{domxref("Blob")}}, {{domxref("BufferSource")}}, {{domxref("FormData")}}, {{domxref("URLSearchParams")}}, {{domxref("USVString")}} 혹은 {{domxref("ReadableStream")}}로만 올 수 있습니다. 따라서 payload에 JSON객체를 추가하려면 해당 객체를 문자열로 지정할 수 있습니다.
그런 다음 Request 객체를 매개 변수로 {{domxref("GlobalFetch.fetch()")}} 호출에 전달하여 api 요청을 가져와 응답을 얻을 수 있습니다. 아래는 예시입니다.
fetch(myRequest) .then(response => { if (response.status === 200) { return response.json(); } else { throw new Error('Something went wrong on api server!'); } }) .then(response => { console.debug(response); // ... }).catch(error => { console.error(error); });
명세 | 상태 | 코멘트 |
---|---|---|
{{SpecName('Fetch','#request-class','Request')}} | {{Spec2('Fetch')}} | Initial definition |
{{CompatibilityTable}}
기능 | Chrome | Edge | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
---|---|---|---|---|---|---|
기본 지원 | {{CompatChrome(42)}} | {{CompatVersionUnknown}} | {{CompatGeckoDesktop(39)}} 34 |
{{CompatNo}} | {{CompatOpera(28)}} | {{CompatNo}} |
Request.body.formData |
{{CompatChrome(60)}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatNo}} | {{CompatOpera(47)}} | {{CompatNo}} |
Request.integrity |
{{CompatChrome(46)}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatNo}} | {{CompatOpera(33)}} | {{CompatNo}} |
Request.redirect |
{{CompatChrome(46)}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatNo}} | {{CompatOpera(33)}} | {{CompatNo}} |
Constructor init can accept ReadableStream body |
{{CompatChrome(43)}} | {{CompatVersionUnknown}} | {{CompatNo}}[1] | {{CompatNo}} | {{CompatOpera(33)}} | {{CompatNo}} |
기능 | Android Webview | Chrome for Android | Edge | Firefox Mobile (Gecko) | IE Phone | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|---|
기본 지원 | {{CompatChrome(42)}} | {{CompatChrome(42)}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatNo}} | {{CompatOperaMobile(28)}} | {{CompatNo}} |
Request.body.formData |
{{CompatChrome(60)}} | {{CompatChrome(60)}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatNo}} | {{CompatOperaMobile(47)}} | {{CompatNo}} |
Request.integrity |
{{CompatChrome(46)}} | {{CompatChrome(46)}} | {{CompatUnknown}} | {{CompatVersionUnknown}} | {{CompatNo}} | {{CompatOperaMobile(33)}} | {{CompatNo}} |
Request.redirect |
{{CompatChrome(46)}} | {{CompatChrome(46)}} | {{CompatUnknown}} | {{CompatVersionUnknown}} | {{CompatNo}} | {{CompatOperaMobile(33)}} | {{CompatNo}} |
Constructor init can accept ReadableStream body |
{{CompatChrome(43)}} | {{CompatChrome(43)}} | {{CompatVersionUnknown}} | {{CompatNo}}[1] | {{CompatNo}} | {{CompatOperaMobile(33)}} | {{CompatNo}} |
[1] 읽기전용 스트림은 파이어폭스에서 사용 가능하며, dom.streams.enabled
와 javascript.options.streams
설정에 숨어있습니다.