Google is committed to advancing racial equity for Black communities. See how.

API-Lesebeispiele

Weg

Verwenden Sie die Nest API, um auf Veränderungen an Gebäuden und Geräten zu achten, damit Sie Energie sparen können, wenn die Hausbesitzer abwesend sind, sie benachrichtigen, wenn etwas nicht stimmt (z Zuhause komfortabler und einladender.

In dieser Anleitung erfahren Sie, wie Sie Daten von Nest-Geräten und -Strukturen lesen. Um zu erfahren , wie Schreib Anrufe zu tätigen, siehe API schreiben Beispiele .

Voraussetzungen

Vor dem API - Aufrufe machen, erhalten ein Zugriffstoken, wie beschrieben in Authentifizieren mit OAuth 2.0 .

Über REST-Leseaufrufe

Verwenden Sie für REST-Aufrufe GET, um Daten zu lesen.

REST-Leseaufrufe sind in begrenzten Szenarien nützlich, z.

  • Einmalige Ad-hoc-Anrufe
  • Proof-of-Concept-Labors
  • Fehlerbehebung
  • Apps, die ungefähr jede Minute abfragen
  • Implementierungen von Schaltflächen aktualisieren

REST-Leseaufrufe sind für kontinuierliche Echtzeit- oder Streaming-Szenarien nicht sinnvoll.

Inhaber-Authentifizierung

Wir empfehlen die Einhaltung des OAuth - "Bearer" Standard , das bietet Sicherheit erhöht , indem Sie "Bearer" Authentifizierungs - Token , den Zugang zu übertragen. Aufrufe mit Client-Anmeldeinformationen in der URL werden nicht empfohlen.

Der "Content-Type" Header weist den Server JSON zu verwenden.

Die "Authorization" Header bietet API - Zugriff.

Beispiele

In den folgenden Beispielen ersetzen YOUR_TOKEN_HERE mit Ihrer spezifischen Zugriffstoken, wie „c.twC2q ...“.

Strukturen und Geräte lesen

Um alle Struktur- und Gerätedaten (Basisebene) zu lesen, verwenden Sie die URL auf Stammebene. Für detailliertere Antworten ändern Sie die URL nach Bedarf.

Locken
curl -v --location-trusted \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_TOKEN_HERE" \
  -X GET "https://developer-api.nest.com/"
Locken-Multiplex
curl -v --location-trusted \
  -H "Accept: text/event-stream" \
  -H "Authorization: Bearer LIST_OF_ACCESS_TOKENS" \
  -X GET "https://developer-api.nest.com/multiplex"
Gehen
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();

Um das Node.js Codebeispiel zu verwenden, installieren Sie das Anforderungsmodul ( https://www.npmjs.com/package/request ).

npm install request
Python 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)
Python 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"))
Java
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();
        }
   }
}

So verwenden Sie das Java-Codebeispiel:

1. Laden Sie auf die neueste okhttp und Okio Jar - Dateien http://square.github.io/okhttp/ . Darüber hinaus laden Sie die Kotlin stdlib Datei auf https://mvnrepository.com/artifact/org.jetbrains.kotlin/kotlin-stdlib wenn Ihre Version von okhttp davon abhängt.

2. Erstellen Sie Ihren Code.

3. Kompilieren Sie das Programm und führen Sie es mit den folgenden Klassenpfadeinstellungen aus.

Ersetzen Sie Ihre Bibliothek Versionsnummern in der javac und java Befehle unter:
javac -cp .:okhttp-<ver>.jar:okio-<ver>.jar ReadNest.java
java -cp .:okhttp-<ver>.jar:okio-<ver>.jar:kotlin-stdlib-<ver>.jar ReadNest

Zum Beispiel, wenn Sie die folgenden Versionen 3.11.0 haben, 2.1.0 und 1.3.0, würde Ihre Befehle wie folgt aussehen:
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

Verwenden von Postman zum Testen der API

Der obige Curl-Aufruf kann in Postman leicht repliziert werden.

PUT-Header zum Schreiben

Verwenden Sie den Link - Code in Postman einen Aufruf in verschiedenen Sprachen als Ausgangspunkt für die weitere Entwicklung zu übersetzen.