•  


一括 要請 - 그래프 API - 文書 - Meta for Developers

一括 要請

여러 Facebook 그래프 API 呼出을 包含하는 하나의 HTTP 要請을 보냅니다. 從屬的 作業은 順次的으로 處理되고 獨立的 作業은 竝列로 處理됩니다. 모든 作業이 完了되면 統合된 應答이 返還되고 HTTP 連結이 닫힙니다.

應答 順序는 要請에서 作業 順序와 一致합니다. 그에 따라 應答을 處理하여 어떤 作業이 成功하였고, 以後의 作業에서 무엇을 가져와야 하는지 確認해야 합니다.

制限 事項

  • 一括 要請은 背馳黨 50個 要請으로 制限됩니다. 一括 要請 內 各 呼出은 API 呼出 限度 및 리소스 限度를 計算하기 위해 別途로 計算됩니다. 例를 들어 10個의 API 呼出이 包含된 一括 要請은 呼出 10個로 看做되며 一括 要請 內 各 呼出은 같은 方式으로 CPU 리소스 限度 計算에 包含됩니다. 仔細한 內容은 使用 制限 가이드 를 參照하세요.
  • 一括 要請에는 同一한 캠페인 에 屬한 여러 個의 廣告 세트 를 包含할 수 없습니다. 마케팅 API 一括 要請 에 對해 仔細히 알아보세요.

一括 要請

一括 要請은 要請의 配列로 構成된 JSON 個體를 받습니다. 이 要請은 JSON 配列로 表現되는 論理的 HTTP 應答의 配列을 返還합니다. 各 應答에는 狀態 코드, 選擇的 헤더 配列 및 選擇的 本文(JSON 인코딩된 文字列)李 包含됩니다.

一括 要請을 보내려면 batch 媒介變數가 JSON 個體인 엔드포인트로 POST 要請을 보내세요.

POST /ENDPOINT?batch=[JSON-OBJECT]

一括 要請 샘플

이 例示에서는 앱이 管理하는 페이지 두 個에 對한 情報를 가져옵니다.

可讀性을 높이기 위한 形式입니다.
curl -i -X POST 'https://graph.facebook.com/me?batch=  
  [
    {
      "method":"GET",
      "relative_url":"PAGE-A-ID"
    },  
    {
      "method":"GET",
      "relative_url":"PAGE-B-ID"
    }
  ]
  &include_headers=false             // Included to remove header information
  &access_token=ACCESS-TOKEN'

모든 作業이 完了되면 各 作業의 結果가 包含된 應答이 電送됩니다. 返還되는 헤더가 實際 API 應答보다 훨씬 더 큰 境遇가 있기 때문에 效率性을 위해 헤더를 削除해야 할 수도 있습니다. 헤더 情報를 包含하려면 include_headers 媒介變數를 削除하거나 true 로 設定하세요.

應答 샘플

本文 필드에는 文字列 인코딩된 JSON 個體가 包含됩니다.

[
  {
    "code": 200,
    "body": "{
      \"name\": \"Page A Name\",
      \"id\": \"PAGE-A-ID\"
      }"
  },
  {
    "code": 200,
    "body": "{
      \"name\": \"Page B Name\",
      \"id\": \"PAGE-B-ID\"
      }"
  }
]

複雜한 一括 要請

一般的으로 서로 다른 HTTP 메서드를 使用하는 作業을 單一 一括 要請으로 結合할 수 있습니다. GET DELETE 作業은 relative_url method 필드만 가질 수 있고 POST PUT 作業에는 選擇的 body 필드가 包含될 수 있습니다. 本文은 URL 檢索 文字列과 비슷한 遠視 HTTP POST 文字列 形式으로 指定해야 합니다.

要請 샘플

다음 例示에서는 管理 對象이고 揭示 權限이 있는 페이지에 새 揭示物을 揭示한 다음, 페이지의 피드를 한 番의 作業으로 가져옵니다.

curl "https://graph.facebook.com/PAGE-ID?batch=
  [
    { 
      "method":"POST",
      "relative_url":"PAGE-ID/feed",
      "body":"message=Test status update"
    },
    { 
      "method":"GET",
      "relative_url":"PAGE-ID/feed"
    }
  ]
  &access_token=ACCESS-TOKEN"

이 呼出의 出力은 다음과 같습니다.

[
    { "code": 200,
      "headers": [
          { "name":"Content-Type", 
            "value":"text/javascript; charset=UTF-8"}
       ],
      "body":"{\"id\":\"…\"}"
    },
    { "code": 200,
      "headers": [
          { "name":"Content-Type", 
            "value":"text/javascript; charset=UTF-8"
          },
          { "name":"ETag", 
            "value": "…"
          }
      ],
      "body": "{\"data\": [{…}]}
    }
]

다음 例示에서는 캠페인에 對해 새 廣告를 만든 다음, 새로 만든 個體의 詳細 情報를 가져옵니다. 本文 媒介變數에 對한 URL 인코딩 에 留意하세요.

curl \
-F 'access_token=...' \
-F 'batch=[
  {
    "method":"POST",
    "name":"create-ad",
    "relative_url":"11077200629332/ads",
    "body":"ads=%5B%7B%22name%22%3A%22test_ad%22%2C%22billing_entity_id%22%3A111200774273%7D%5D"
  }, 
  {
    "method":"GET",
    "relative_url":"?ids={result=create-ad:$.data.*.id}"
  }
]' \
https://graph.facebook.com

다음의 例示에서는 여러 페이지를 비즈니스 管理者에 追加합니다.

curl \
-F 'access_token=<ACCESS_TOKEN>' \
-F 'batch=[
  {
    "method":"POST",
    "name":"test1",
    "relative_url":"<BUSINESS_ID>/owned_pages",
    "body":"page_id=<PAGE_ID_1>"
  }, 
  {
    "method":"POST",
    "name":"test2",
    "relative_url":"<BUSINESS_ID>/owned_pages",
    "body":"page_id=<PAGE_ID_2>"
  }, 
  {
    "method":"POST",
    "name":"test3",
    "relative_url":"<BUSINESS_ID>/owned_pages",
    "body":"page_id=<PAGE_ID_3>"
  }, 
]' \
"https://graph.facebook.com/v12.0"

變數 說明:

  • <ACCESS_TOKEN> business_management 權限이 있는 액세스 토큰입니다.
  • <BUSINESS_ID> 는 페이지를 登錄해야 하는 비즈니스 管理者의 ID입니다.
  • <PAGE_ID_n> 은 登錄할 페이지의 ID입니다.

誤謬

要請된 作業 中 하나에서 誤謬가 發生할 수도 있습니다. 이는 (例를 들어) 開發者에게 要請된 作業을 遂行할 수 있는 權限이 없기 때문입니다. 이 應答은 標準 그래프 API와 類似하지만 一括 應答 口文으로 캡슐化됩니다.

[
    { "code": 403,
      "headers": [
          {"name":"WWW-Authenticate", "value":"OAuth…"},
          {"name":"Content-Type", "value":"text/javascript; charset=UTF-8"} ],
      "body": "{\"error\":{\"type\":\"OAuthException\", … }}"
    }
]

그래도 一括 要請 內 다른 要請은 完了되며 200 狀態 코드와 함께 正常的으로 返還됩니다.

時間 超過

크거나 複雜한 一括 要請의 境遇 一括 要請 내 모든 作業을 完了하는 데 너무 오랜 時間이 所要되면 時間 超過가 發生할 수 있습니다. 이 境遇 一括 要請이 部分的으로 完了됩니다. 部分的으로 完了된 一括 要請에서 成功的으로 完了된 要請은 200 狀態 코드가 包含된 一般 出力을 返還합니다. 失敗한 要請에 對한 應答은 null 이 됩니다. 失敗한 要請은 다시 試圖할 수 있습니다.

JSONP를 使用한 一括 呼出

一括 API는 나머지 그래프 API와 마찬가지로 JSONP를 支援합니다. JSONP 콜백 機能은 callback 檢索 文字列 또는 樣式 포스트(form post) 媒介變數를 使用하여 指定됩니다.

여러 액세스 토큰 使用

單一 一括 要請의 個別 要請은 自體 액세스 토큰을 쿼리 文字列 또는 樣式 포스트(form post) 媒介變數로 指定할 수 있습니다. 이 境遇 最上位 水準 액세스 토큰은 폴백 토큰으로 看做되며 個別 要請에서 액세스 토큰이 明示的으로 指定되지 않은 境遇에 使用됩니다.

이 機能은 여러 다른 使用者 또는 페이지 액세스 토큰을 使用하여 API를 쿼리하거나 一部 呼出을 앱 액세스 토큰을 使用하여 해야 하는 境遇에 有用합니다.

모든 個別 要請에 自體 토큰이 包含되어 있더라도 하나의 액세스 토큰을 最上位 水準 媒介變數로 包含해야 합니다.

바이너里 데이터 업로드

一括 呼出에서 여러 바이너里 項目을 업로드할 수 있습니다. 이렇게 하기 위해서는 모든 바이너里 項目을 multipart/mime 添附 파일로 要請에 追加해야 하며 各 作業에서 attached_files 屬性을 使用하여 바이너里 項目을 參照해야 합니다. attached_files 俗姓은 쉼標로 區分된 添附 파일 이름의 리스트를 값으로 取할 수 있습니다.

다음 例示에서는 單一 一括 呼出로 2張의 寫眞을 업로드하는 方法을 보여줍니다.

curl 
     -F 'access_token=…' \
     -F 'batch=[{"method":"POST","relative_url":"me/photos","body":"message=My cat photo","attached_files":"file1"},{"method":"POST","relative_url":"me/photos","body":"message=My dog photo","attached_files":"file2"},]' \
     -F 'file1=@cat.gif' \
     -F 'file2=@dog.jpg' \
    https://graph.facebook.com
-->
- "漢字路" 한글한자자동변환 서비스는 교육부 고전문헌국역지원사업의 지원으로 구축되었습니다.
- "漢字路" 한글한자자동변환 서비스는 전통문화연구회 "울산대학교한국어처리연구실 옥철영(IT융합전공)교수팀"에서 개발한 한글한자자동변환기를 바탕하여 지속적으로 공동 연구 개발하고 있는 서비스입니다.
- 현재 고유명사(인명, 지명등)을 비롯한 여러 변환오류가 있으며 이를 해결하고자 많은 연구 개발을 진행하고자 하고 있습니다. 이를 인지하시고 다른 곳에서 인용시 한자 변환 결과를 한번 더 검토하시고 사용해 주시기 바랍니다.
- 변환오류 및 건의,문의사항은 juntong@juntong.or.kr로 메일로 보내주시면 감사하겠습니다. .
Copyright ⓒ 2020 By '전통문화연구회(傳統文化硏究會)' All Rights reserved.
 한국   대만   중국   일본