수색…


통사론

  • promise = fetch (url) .then (function (response) {})
  • promise = fetch (url, options)
  • 약속 = 가져 오기 (요청)

매개 변수

옵션 세부
method 요청에 사용할 HTTP 메소드입니다. 예 : GET , POST , PUT , DELETE , HEAD . 기본값은 GET 입니다.
headers 요청에 포함 할 추가 HTTP 헤더가 포함 된 Headers 객체입니다.
body 요청 페이로드는 string 또는 FormData 객체가 될 수 있습니다. 기본값은 undefined
cache 캐싱 모드. default , reload , no-cache
referrer 요청의 리퍼러입니다.
mode cors , no-cors , same-origin . 기본값은 no-cors 입니다.
credentials omit , same-origin , include omit 기본값.
redirect follow , error , manual . 기본값은하기 follow .
integrity 연관된 무결성 메타 데이터. 기본값은 빈 문자열입니다.

비고

Fetch 표준 은 요청, 응답 및 요청을 바인드하는 프로세스 인 페칭을 정의합니다.

다른 인터페이스 중에서이 표준은 네트워크 요청과 관련된 모든 작업에 사용하도록 설계된 RequestResponse 객체를 정의합니다.

이러한 인터페이스의 유용한 응용 프로그램은 GlobalFetch 이며 원격 리소스를로드하는 데 사용할 수 있습니다.

Fetch 표준을 아직 지원하지 않는 브라우저의 경우 GitHub에서 polyfill을 사용할 수 있습니다. 또한 서버 / 클라이언트 일관성에 유용한 Node.js 구현 도 있습니다.

취소 가능한 약속이없는 경우 가져 오기 요청을 중단 할 수 없습니다 ( github 문제 ). 그러나 1 단계에서 취소 가능한 약속에 대한 T39의 제안 이있다.

GlobalFetch

GlobalFetch 인터페이스는 리소스를 요청하는 데 사용할 수있는 fetch 함수를 제공합니다.

fetch('/path/to/resource.json')
    .then(response => {
        if (!response.ok()) {
            throw new Error("Request failed!");
        }
            
        return response.json();
    })
    .then(json => { 
        console.log(json);
    }); 

해결 된 값은 응답 개체입니다. 이 객체는 응답 본문과 상태 및 헤더를 포함합니다.

요청 헤더 설정

fetch('/example.json', {
    headers: new Headers({
        'Accept': 'text/plain',
        'X-Your-Custom-Header': 'example value'
    })
});

포스트 데이터

양식 데이터 게시

fetch(`/example/submit`, {
    method: 'POST',
    body: new FormData(document.getElementById('example-form'))
});

JSON 데이터 게시

fetch(`/example/submit.json`, {
    method: 'POST',
    body: JSON.stringify({
        email: document.getElementById('example-email').value,
        comment: document.getElementById('example-comment').value
    })
});

쿠키 보내기

가져 오기 기능은 기본적으로 쿠키를 보내지 않습니다. 쿠키를 보낼 수있는 방법에는 두 가지가 있습니다.

  1. URL이 호출 스크립트와 같은 출처에있는 경우에만 쿠키를 보내십시오.
fetch('/login', {
    credentials: 'same-origin'
})
  1. 교차 출처 통화의 경우에도 항상 쿠키를 보내십시오.
fetch('https://otherdomain.com/login', {
    credentials: 'include'
})

JSON 데이터 가져 오기

// get some data from stackoverflow
fetch("https://api.stackexchange.com/2.2/questions/featured?order=desc&sort=activity&site=stackoverflow")
  .then(resp => resp.json())
  .then(json => console.log(json))
  .catch(err => console.log(err));

스택 오버플로 API에서 Fetch를 사용하여 질문 표시

const url =
      'http://api.stackexchange.com/2.2/questions?site=stackoverflow&tagged=javascript';

const questionList = document.createElement('ul');
document.body.appendChild(questionList);

const responseData = fetch(url).then(response => response.json());
responseData.then(({items, has_more, quota_max, quota_remaining}) => {
  for (const {title, score, owner, link, answer_count} of items) {
    const listItem = document.createElement('li');
    questionList.appendChild(listItem);
    const a = document.createElement('a');
    listItem.appendChild(a);
    a.href = link;
    a.textContent = `[${score}] ${title} (by ${owner.display_name || 'somebody'})`
  }
});


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow