O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.

Exemplos de leitura de API

Longe

Use a API Nest para ouvir alterações em estruturas e dispositivos, para que você possa tomar medidas para economizar energia quando os proprietários estão fora, notificá-los de que algo está errado (por exemplo, a porta da garagem está aberta) ou ativar recursos para fazer o casa mais confortável e acolhedora.

Este guia mostra como ler dados de dispositivos e estruturas Nest. Para saber como fazer chamadas de gravação, consulte API Escrever Exemplos .

Pré-requisitos

Antes de fazer chamadas de API, obter um token de acesso, conforme descrito na autenticação com o OAuth 2.0 .

Sobre chamadas de leitura REST

Para chamadas REST, use GET para ler os dados.

As chamadas de leitura REST são úteis em cenários limitados, como os seguintes casos de uso:

  • Chamadas pontuais ad-hoc
  • Laboratórios de prova de conceito
  • Solução de problemas
  • Aplicativos que pesquisam aproximadamente a cada minuto
  • Implementações do botão Atualizar

As chamadas de leitura REST não são úteis para cenários contínuos em tempo real ou de streaming.

Autenticação do portador

Recomendamos conformidade com o padrão OAuth , que oferece maior segurança usando "Bearer" de autenticação para transmitir o token de acesso. Chamadas com credenciais de cliente no URL não são recomendadas.

O "Content-Type" cabeçalho dirige o servidor para usar JSON.

A "Authorization" cabeçalho fornece acesso à API.

Exemplos

Nos exemplos a seguir, substitua YOUR_TOKEN_HERE com o seu token de acesso específico, como "c.twC2q ...".

Leia estruturas e dispositivos

Para ler toda a estrutura e os dados do dispositivo (nível de base), use a URL de nível raiz. Para respostas mais granulares, modifique o URL conforme necessário.

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

Para usar o exemplo de código Node.js, instale o módulo de solicitação ( 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();
        }
   }
}

Para usar o exemplo de código Java:

1. Faça o download do mais recente okhttp e arquivos JAR Okio em http://square.github.io/okhttp/ . Além disso, baixe o arquivo Kotlin stdlib em https://mvnrepository.com/artifact/org.jetbrains.kotlin/kotlin-stdlib se sua versão do okhttp depende disso.

2. Construa seu código.

3. Compile e execute o programa com as seguintes configurações de caminho de classe.

Substituir seus números de versão de biblioteca no javac e comandos java abaixo:
javac -cp .:okhttp-<ver>.jar:okio-<ver>.jar ReadNest.java
java -cp .:okhttp-<ver>.jar:okio-<ver>.jar:kotlin-stdlib-<ver>.jar ReadNest

Por exemplo, se você tem as seguintes versões 3.11.0, 2.1.0 e 1.3.0, os comandos ficaria assim:
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

Usando Postman para testar a API

A chamada Curl acima pode ser facilmente replicada no Postman.

PUT cabeçalho para escrever

Use o link Código de carteiro para traduzir uma chamada em diferentes idiomas como ponto de partida para o desenvolvimento.