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

רָחוֹק

השתמש בממשק ה- API של Nest כדי להאזין לשינויים במבנים ובמכשירים, כך שתוכל לנקוט צעדים לחיסכון באנרגיה כשבעלי הבית אינם נמצאים, להודיע ​​להם שמשהו אינו כשורה (לדוגמא, דלת המוסך פתוחה), או להפעיל תכונות כדי להפוך את הבית יותר נוח ומסביר פנים.

מדריך זה מראה כיצד לקרוא נתונים ממכשירים ומבנים של קן. כדי ללמוד כיצד לבצע שיחות כתיבה, עיין בדוגמאות לכתיבת API .

תנאים מוקדמים

לפני ביצוע שיחות API, השג אסימון גישה, כמתואר באימות עם OAuth 2.0 .

אודות REST קרא קריאות

לשיחות REST, השתמש ב- GET כדי לקרוא נתונים.

שיחות קריאה לאחר קריאה מועילות הן תרחישים מוגבלים, כגון מקרי השימוש הבאים:

  • שיחות חד-פעמיות אד-הוק
  • מעבדות הוכחה לקונספט
  • פתרון תקלות
  • אפליקציות שמסקרות בערך כל דקה
  • רישום יישומי כפתור

שיחות שקראו REST אינן מועילות לתרחישים רציפים בזמן אמת או סטרימינג.

אימות נושא

אנו ממליצים על עמידה בתקן OAuth , המציע אבטחה מוגברת באמצעות אימות "Bearer" להעברת אסימון הגישה. לא מומלצות שיחות עם אישורי לקוח בכתובת האתר.

הכותרת "Content-Type" מכוונת את השרת להשתמש ב- JSON.

כותרת "Authorization" מספקת גישה לממשק API.

דוגמאות

בדוגמאות הבאות, החלף את YOUR_TOKEN_HERE באסימון הגישה הספציפי שלך, כגון "c.twC2q ...".

קרא מבנים ומכשירים

כדי לקרוא את כל נתוני המבנה ונתונים (רמת בסיס), השתמש בכתובת האתר ברמת השורש. לקבלת תשובות מפורטות יותר, שנה את כתובת האתר לפי הצורך.

סִלְסוּל
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. הורד את קבצי ה- okhttp וה- okio Jar האחרונים באתר http://square.github.io/okhttp/ . בנוסף, הורד את קובץ ה- Kotlin stdlib בכתובת https://mvnrepository.com/artifact/org.jetbrains.kotlin/kotlin-stdlib אם הגירסה שלך ל- okhttp תלויה בו.

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 כדי לתרגם שיחה לשפות שונות כנקודת מוצא להמשך פיתוח.