Notice: We're retiring Works with Nest. See the home page for more information.
Google is committed to advancing racial equity for Black communities. See how.
이 페이지는 Cloud Translation API를 통해 번역되었습니다.
Switch to English

API 읽기 예

떨어져

Nest API를 사용하여 구조 및 장치의 변경 사항을 청취하여 주택 소유자가 자리를 비울 때 에너지를 절약하고 무언가가 잘못되었다는 것을 알리거나 (차고 문이 열려있는 경우) 알리거나 더 편안하고 환영하는 집.

이 안내서는 Nest 장치 및 구조에서 데이터를 읽는 방법을 보여줍니다. 쓰기 호출 방법을 배우려면 API 쓰기 예제를 참조하십시오.

전제 조건

API 호출을 작성하기 전에 OAuth 2.0 인증에 설명 된대로 액세스 토큰을 확보하십시오.

REST 읽기 호출 정보

REST 호출의 경우 GET을 사용하여 데이터를 읽으십시오.

REST 읽기 호출은 다음 사용 사례와 같은 제한된 시나리오에 유용합니다.

  • 임시 일회성 통화
  • 개념 증명 랩
  • 문제 해결
  • 약 1 분마다 투표하는 앱
  • 새로 고침 버튼 구현

REST 읽기 호출은 연속적인 실시간 또는 스트리밍 시나리오에는 유용하지 않습니다.

무기명 인증

액세스 토큰을 전송하기 위해 "Bearer" 인증을 사용하여 보안을 강화하는 OAuth 표준을 준수하는 것이 좋습니다. URL에 클라이언트 자격 증명이있는 통화는 권장되지 않습니다.

"Content-Type" 헤더는 서버가 JSON을 사용하도록 지시합니다.

"Authorization" 헤더는 API 액세스를 제공합니다.

다음 예에서 YOUR_TOKEN_HERE 를 "c.twC2q ..."와 같은 특정 액세스 토큰으로 바꾸 YOUR_TOKEN_HERE .

구조 및 장치 읽기

모든 구조 및 장치 데이터 (기본 수준)를 읽으려면 루트 수준 URL을 사용하십시오. 보다 세분화 된 응답을 위해 필요에 따라 URL을 수정하십시오.

곱슬 곱슬하다
curl -v --location-trusted \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_TOKEN_HERE " \
  -X GET "https://developer-api.nest.com/"
컬 멀티 플렉스
curl -v --location-trusted \
  -H "Accept: text/event-stream" \
  -H "Authorization: Bearer LIST_OF_ACCESS_TOKENS " \
  -X GET "https://developer-api.nest.com/multiplex"
가다
package main

import (
    "errors"
    "fmt"
    "io/ioutil"
    "net/http"
)

const token = " YOUR_TOKEN_HERE " // Update with your token

func main() {
    url := "https://developer-api.nest.com/"
    req, _ := http.NewRequest(http.MethodGet, url, nil)

    req.Header.Add(
        "Authorization",
        fmt.Sprintf("Bearer %s", token),
    )

    customClient := http.Client {
        CheckRedirect: func(redirRequest *http.Request, via []*http.Request) error {
            // Go's http.DefaultClient does not forward headers when a redirect 3xx
            // response is received. Thus, the header (which in this case contains the
            // Authorization token) needs to be passed forward to the redirect
            // destinations.
            redirRequest.Header = req.Header

            // Go's http.DefaultClient allows 10 redirects before returning an
            // an error. We have mimicked this default behavior.
            if len(via) >= 10 {
                return errors.New("stopped after 10 redirects")
            }
            return nil
        },
    }

    response, _ := customClient.Do(req)

    if response.StatusCode != 200 {
        panic(fmt.Sprintf(
            "Expected a 200 status code; got a %d",
            response.StatusCode,
        ))
    }

    defer response.Body.Close()
    body, _ := ioutil.ReadAll(response.Body)
    fmt.Println(string(body))

}
Node.js
"use strict"

var request = require('request');

var token = " YOUR_TOKEN_HERE "; // Update with your token

var url = "https://developer-api.nest.com";

var options = {
    "method": "GET",
    "path": "/",
    "headers": {
       "Authorization": "Bearer " + token
    },
    "followRedirect": true
};

var req = request(url, options, function(err, resp, data) {
    console.log('response code: ' + resp.statusCode);
    if (err) {
        console.log('Error: ' + err.message);
    }
    console.log("data: " + data);
});

req.end();

Node.js 코드 예제를 사용하려면 요청 모듈 ( https://www.npmjs.com/package/request )을 설치하십시오.

npm install request
파이썬 2
import hashlib
import json
import os
import requests

url = "https://developer-api.nest.com/"

token = " YOUR_TOKEN_HERE " # Update with your token

headers = {'Authorization': 'Bearer {0}'.format(token), 'Content-Type': 'application/json'}

response = requests.get(url, headers=headers, allow_redirects=False)
if response.status_code == 307:
    response = requests.get(response.headers['Location'], headers=headers, allow_redirects=False)

print(response.text)
파이썬 3
import http.client
from urllib.parse import urlparse

token = " YOUR_TOKEN_HERE " # Update with your token

conn = http.client.HTTPSConnection("developer-api.nest.com")
headers = {'authorization': "Bearer {0}".format(token)}
conn.request("GET", "/", headers=headers)
response = conn.getresponse()

if response.status == 307:
    redirectLocation = urlparse(response.getheader("location"))
    conn = http.client.HTTPSConnection(redirectLocation.netloc)
    conn.request("GET", "/", headers=headers)
    response = conn.getresponse()
    if response.status != 200:
        raise Exception("Redirect with non 200 response")

data = response.read()
print(data.decode("utf-8"))
자바
import java.io.IOException;
import okhttp3.Headers;
import okhttp3.OkHttpClient;
import okhttp3.OkHttpClient.Builder;
import okhttp3.Request;
import okhttp3.Response;
import okhttp3.Authenticator;
import okhttp3.Route;

public class ReadNest {

    public static void main(String[] args) throws IOException {
        String auth = "Bearer YOUR_TOKEN_HERE "; // Update with your token

        OkHttpClient client = new OkHttpClient.Builder()
        .authenticator(new Authenticator() {
          @Override public Request authenticate(Route route, Response response) throws IOException {
            return response.request().newBuilder()
                .header("Authorization", auth)
                .build();
          }
        })
        .followRedirects(true)
        .followSslRedirects(true)
        .build();

        Request request = new Request.Builder()
        .url("https://developer-api.nest.com")
        .get()
        .addHeader("content-type", "application/json; charset=UTF-8")
        .addHeader("authorization", auth)
        .build();

        try {
            System.out.println("Begin request:  ");
            Response response = client.newCall(request).execute();
            System.out.println(response.body().string());
            System.out.println("End request");
            System.out.println();
            Thread.sleep(2 * 1000);
        } catch (InterruptedException e) {
                e.printStackTrace();
        }
   }
}

Java 코드 예제를 사용하려면 다음을 수행하십시오.

1. http://square.github.io/okhttp/ 에서 최신 okhttp 및 okio Jar 파일을 다운로드 하십시오 . 또한 okhttp 버전이 여기에 의존하는 경우 https://mvnrepository.com/artifact/org.jetbrains.kotlin/kotlin-stdlib 에서 Kotlin stdlib 파일을 다운로드하십시오.

2. 코드를 작성하십시오.

3. 다음 클래스 경로 설정으로 프로그램을 컴파일하고 실행하십시오.

아래의 javac 및 java 명령에서 라이브러리 버전 번호를 대체하십시오.
javac -cp .:okhttp- <ver> .jar:okio- <ver> .jar ReadNest.java
java -cp .:okhttp- <ver> .jar:okio- <ver> .jar:kotlin-stdlib- <ver> .jar ReadNest

예를 들어, 다음 버전 3.11.0, 2.1.0 및 1.3.0이있는 경우 명령은 다음과 같습니다.
javac -cp .:okhttp-3.11.0.jar:okio-2.1.0.jar ReadNest.java
java -cp .:okhttp-3.11.0.jar:okio-2.1.0.jar:kotlin-stdlib-1.3.0.jar ReadNest

Postman을 사용하여 API 테스트

위의 컬 호출은 Postman에서 쉽게 복제 할 수 있습니다.

쓸 PUT 헤더

Postman의 코드 링크를 사용하여 추가 개발을위한 출발점으로 통화를 다른 언어로 번역하십시오.