API Read Examps

دور

از Nest API برای گوش دادن به تغییرات در ساختارها و دستگاه‌ها استفاده کنید، بنابراین می‌توانید برای صرفه‌جویی در مصرف انرژی در زمانی که مالکان خانه نیستند، به آنها اطلاع دهید که مشکلی وجود ندارد (مثلاً درب گاراژ باز است) یا ویژگی‌هایی را فعال کنید تا خانه راحت تر و دلپذیرتر

این راهنما نحوه خواندن داده‌ها را از دستگاه‌ها و ساختارهای Nest نشان می‌دهد. برای یادگیری نحوه برقراری تماس‌های نوشتن، به مثال‌های نوشتن API مراجعه کنید.

پیش نیازها

قبل از برقراری تماس‌های API، همانطور که در Authenticating with OAuth 2.0 توضیح داده شده است، یک نشانه دسترسی دریافت کنید.

درباره REST خواندن تماس ها

برای تماس‌های REST، از GET برای خواندن داده‌ها استفاده کنید.

تماس‌های خواندن REST برای سناریوهای محدود مفید هستند، مانند موارد استفاده زیر:

  • تماس‌های یک‌باره موقت
  • آزمایشگاه های اثبات مفهوم
  • عیب یابی
  • برنامه‌هایی که تقریباً هر دقیقه نظرسنجی می‌کنند
  • اجرای دکمه های Refresh

تماس‌های خواندنی REST برای سناریوهای بی‌درنگ یا جریانی مداوم مفید نیستند.

احراز هویت حامل

ما رعایت استاندارد OAuth را توصیه می کنیم که با استفاده از احراز هویت "Bearer" برای انتقال رمز دسترسی، امنیت بیشتری را ارائه می دهد. تماس با اعتبار مشتری در URL توصیه نمی شود.

هدر "Content-Type" سرور را به استفاده از JSON هدایت می کند.

هدر "Authorization" دسترسی API را فراهم می کند.

مثال ها

در مثال‌های زیر، YOUR_TOKEN_HERE را با نشانه دسترسی خاص خود، مانند "c.twC2q..." جایگزین کنید.

ساختارها و دستگاه ها را بخوانید

برای خواندن تمام ساختار و داده های دستگاه (سطح پایه)، از 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();
        }
   }
}

برای استفاده از کد جاوا به عنوان مثال:

1. آخرین فایل های okhttp و okio Jar را در http://square.github.io/okhttp/ دانلود کنید. علاوه بر این، اگر نسخه okhttp شما به آن بستگی دارد، فایل Kotlin stdlib را در https://mvnrepository.com/artifact/org.jetbrains.kotlin/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

فراخوان Curl فوق به راحتی در Postman قابل تکرار است.

هدر را برای نوشتن قرار دهید

از پیوند Code در Postman برای ترجمه تماس به زبان های مختلف به عنوان نقطه شروع برای توسعه بیشتر استفاده کنید.