첫 번째 API 호출하기

Street View Publish API를 기본 호출하는 데 필요한 단계를 완료하려면 이 튜토리얼의 단계를 따르세요.

HTTP 호출

Street View Publish API는 curl, wget, Postman. 대부분의 경우 원하는 프로그래밍 언어를 사용하여 클라이언트 애플리케이션을 빌드하는 것이 이지만 이 튜토리얼에서는 실행할 수 있습니다

클라이언트 라이브러리를 사용하지 않는 경우 클라이언트 라이브러리도 제공됩니다. 직접 HTTP 호출을 하고 싶을 수 있습니다

기본 요건

  1. Google API 콘솔에 액세스하고 API 키를 요청하고 애플리케이션을 등록하려면 Google 계정이 필요합니다.

  2. Google Developers Console에서 프로젝트를 만들고 승인 사용자 인증 정보를 획득하여 애플리케이션에서 API 요청을 제출할 수 있도록 합니다.

  3. 프로젝트를 만든 후에 애플리케이션에서 사용하도록 등록된 서비스 중 하나가 Street View Publish API인지 확인하세요.

    1. API 콘솔로 이동하여 방금 등록한 프로젝트를 선택합니다.
    2. 사용 설정된 API 페이지로 이동합니다. Google Street View API가 사용 설정된 API 목록에 있는지 확인합니다. 그렇지 않은 경우 API 라이브러리를 열고 API를 사용 설정합니다.
  4. 인증 가이드를 읽고 OAuth 2.0 승인을 구현하는 방법을 알아봅니다.

  5. JavaScript Object Notation (JSON) 데이터 형식의 핵심 개념을 익힙니다. JSON은 임의의 데이터 구조를 간단한 텍스트로 표현하는 언어에 독립적인 일반적인 데이터 형식입니다. 자세한 내용은 json.org를 참조하세요.

API 키 가져오기

인증 및 할당량을 위해서는 Developers Console에서 생성된 사용자 인증 정보와 함께 Google Street View Publish API를 사용해야 합니다.

  1. 사용자 인증 정보로 이동합니다. 페이지로 이동하세요.
  2. 이미 API 키가 있으면 그 값을 사용할 수 있습니다. 그렇지 않으면 새 사용자 인증 정보 메뉴에서 API 키를 선택하여 새로 만듭니다.

액세스 토큰 받기

  1. Google Developers OAuth 2.0 Playground로 이동합니다.
  2. 설정 메뉴 (오른쪽 상단의 톱니바퀴 아이콘)를 클릭하고 자체 OAuth 사용자 인증 정보 사용을 선택한 다음 Client IDClient secret를 입력한 후 닫기를 클릭합니다. <ph type="x-smartling-placeholder">
  3. 1단계: 선택 및 API 승인, API 범위 입력 <ph type="x-smartling-placeholder">https://www.googleapis.com/auth/streetviewpublish</ph> 내 범위 입력 필드에 입력한 다음 API 승인을 클릭합니다. 가 새 페이지가 열려 API를 승인할 것인지 확인합니다.
  4. Exchange Authorization Code for 토큰을 클릭합니다. 이렇게 하면 Access token 필드 다음 단계로 이동합니다. 액세스 토큰은 60분 후에 만료됩니다. 다음 옵션을 선택할 수 있습니다. 만료되기 전에 토큰을 자동으로 새로고침하면 새 토큰이 생성됩니다.

HTTP 요청 보내기

API 키와 액세스 토큰이 준비되었으면 다음 명령어를 실행할 수 있습니다. 사용하여 서비스에 대한 HTTP 호출을 수행합니다. 아래 예에서 /v1/photo:startUpload 메서드를 호출합니다.

    $ curl --request POST \
    --url 'https://streetviewpublish.googleapis.com/v1/photo:startUpload?key=YOUR_API_KEY' \
    --header 'authorization: Bearer YOUR_ACCESS_TOKEN' \
    --header 'Content-Length: 0'
  

샘플 요청

위의 HTTP 요청을 보내는 데 문제가 없다면 메서드를 참조하세요. 아래에 다양한 호출이 표시됩니다.

사진 목록을 가져오는 중

    $ curl --request GET \
    --url 'https://streetviewpublish.googleapis.com/v1/photos?key=YOUR_API_KEY' \
    --header 'authorization: Bearer YOUR_ACCESS_TOKEN'
  

사진 가져오는 중

    $ curl --request GET \
    --url 'https://streetviewpublish.googleapis.com/v1/photo/PHOTO_ID?key=YOUR_API_KEY' \
    --header 'authorization: Bearer YOUR_ACCESS_TOKEN'
  

사진 업로드

사진을 만들려면 세 번의 개별 호출이 필요합니다. 첫 번째 호출은 업로드 URL을 반환합니다. 두 번째 호출에서 사진 바이트를 업로드하는 데 사용됩니다. 사진 바이트가 업로드된 후에는 세 번째 호출은 사진의 메타데이터를 업로드하고 사진 ID를 반환합니다.

  1. 업로드 URL 요청
            $ curl --request POST \
            --url 'https://streetviewpublish.googleapis.com/v1/photo:startUpload?key=YOUR_API_KEY' \
            --header 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
            --header 'Content-Length: 0'
          
  2. 업로드 URL에 사진 바이트 업로드
            $ curl --request POST \
            --url 'UPLOAD_URL' \
            --upload-file 'PATH_TO_FILE' \
            --header 'Authorization: Bearer YOUR_ACCESS_TOKEN'
          
  3. 사진의 메타데이터 업로드
            $ curl --request POST \
            --url 'https://streetviewpublish.googleapis.com/v1/photo?key=YOUR_API_KEY' \
            --header 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
            --header 'Content-Type: application/json' \
            --data '{
                      "uploadReference":
                      {
                        "uploadUrl": "UPLOAD_URL"
                      },
                      "pose":
                       {
                         "heading": 105.0,
                         "latLngPair":
                         {
                           "latitude": 46.7512623,
                           "longitude": -121.9376983
                         }
                      },
                      "captureTime":
                      {
                        "seconds": 1483202694
                      },
                    }'
          

사진 업데이트

   $ curl --request PUT \
    --url 'https://streetviewpublish.googleapis.com/v1/photo/PHOTO_ID?key=YOUR_API_KEY&updateMask=pose.latLngPair' \
    --header 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
     --header 'Content-Type: application/json' \
     --data '{
               "pose":
               {
                 "latLngPair":
                 {
                   "latitude": 46.7512624,
                   "longitude": -121.9376982
                 }
               }
             }'
  

여러 장의 사진 일괄 업데이트하기

   $ curl --request POST \
    --url 'https://streetviewpublish.googleapis.com/v1/photos:batchUpdate?key=YOUR_API_KEY' \
    --header 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
     --header 'Content-Type: application/json' \
     --data '{
              "updatePhotoRequests": [
                  {
                      "photo": {
                          "photoId": {
                              "id": "FIRST_PHOTO_ID"
                          },
                          "pose": {
                              "latLngPair": {
                                  "latitude": 37.1701638,
                                  "longitude": -122.3624387
                              }
                          }
                      },
                      "updateMask": "pose.latLngPair"
                  },
                  {
                      "photo": {
                          "photoId": {
                              "id": "SECOND_PHOTO_ID"
                          },
                          "pose": {
                              "latLngPair": {
                                  "latitude": 37.1685704,
                                  "longitude": -122.3618021
                              }
                          }
                      },
                      "updateMask": "pose.latLngPair"
                  }
              ]
          }'
  

사진 삭제

    $ curl --request DELETE \
    --url 'https://streetviewpublish.googleapis.com/v1/photo/PHOTO_ID?key=YOUR_API_KEY' \
    --header 'Authorization: Bearer YOUR_ACCESS_TOKEN'
  

updateMask란 무엇인가요?

updateMask를 사용하면 일부를 업데이트하려는 경우 요청을 작게 유지할 수 있습니다. 한 번에 삭제할 수 있습니다. updateMask가 없으면 요청에서 전체 사진입니다. 즉, updateMask를 설정하지 않았고 요청이 다음과 같은 경우 pose이(가) 없으면 사진의 pose이(가) 삭제됩니다. 가능한 일부 값 updateMask의 조건은 places, pose.heading, pose.latlngpair, pose.level, connections입니다. updateMask에 쉼표로 구분된 값을 여러 개 입력할 수 있습니다.