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

এপিআই লেখার উদাহরণ

থার্মোস্ট্যাট

কাঠামো এবং ডিভাইসগুলিতে পরিবর্তনগুলি শুনতে নেস্ট এপিআই ব্যবহার করুন, যাতে আপনি বাড়ির মালিকরা দূরে থাকাকালীন শক্তি সংরক্ষণের পদক্ষেপ নিতে পারেন, তাদেরকে অবহিত করুন যে কিছু ভুল আছে (উদাহরণস্বরূপ, গ্যারেজের দরজা খোলা আছে), বা বৈশিষ্ট্যগুলি সক্রিয় করার জন্য হোম আরো আরামদায়ক এবং স্বাগত জানাই।

এই গাইডটিতে আপনি কীভাবে নীড় ডিভাইস এবং কাঠামোগুলিতে ডেটা লিখতে PUT কমান্ডটি ব্যবহার করবেন তা শিখবেন। কিভাবে পঠিত কল করার জন্য জানতে, এপিআই পড়ুন উদাহরণ

এই কোডগুলির নমুনাগুলি পরীক্ষা করে দেখুন এবং নেস্ট লার্নিং থার্মোস্ট্যাট এবং নেস্ট ক্যামে ডেটা লিখতে শিখুন।

পূর্বশর্ত

API কল করার আগে, প্রাপ্ত একটি অ্যাক্সেস, টোকেন বর্ণনা অনুযায়ী OAuth এর 2.0 প্রমাণীকরণ করতে এবং অনুমোদনের জন্য নমুনা কোড

REST কল কল সম্পর্কে write

REST কলগুলির জন্য, ডেটা লিখতে PUT বা প্যাচ ব্যবহার করুন।

বহনকারী প্রমাণীকরণ

আমরা মেনে সুপারিশ OAuth এর মান , যা অফার ব্যবহার করে নিরাপত্তা বৃদ্ধি "Bearer" প্রমাণীকরণ টোকেন এক্সেস প্রেরণ করতে। URL- এ ক্লায়েন্ট শংসাপত্র সহ কলগুলি সুপারিশ করা হয় না।

"Content-Type" হেডার সার্ভার তাদেরকে JSON ব্যবহার করতে নির্দেশ দেয়।

"Authorization" হেডার API অ্যাক্সেস প্রদান করে।

উদাহরণ

নিম্নলিখিত উদাহরণে, প্রতিস্থাপন YOUR_TOKEN_HERE আপনার নির্দিষ্ট অ্যাক্সেস টোকেন সঙ্গে, যেমন "c.twC2q ..."।

একটি কাঠামোর জন্য দূরে রাষ্ট্র সেট করুন

পরিবর্তন করার জন্য দূরে রাষ্ট্র "হোম" করার জন্য একটি কাঠামো, লেখা away : এই বিন্যাস ব্যবহার ক্ষেত্র "{"away": "home"}" , যেখানে "দূরে" ক্ষেত্র নাম, এবং "হোম" হয় নতুন রাষ্ট্র

একটি কাঠামো লিখতে, আমরা যুক্ত করতে হবে /structures বস্তু এবং structure_id URL টি রুট পথের দিকে। নোট করুন যে স্ট্রিংগুলি "উদ্ধৃতি চিহ্ন" দিয়ে ফর্ম্যাট করা হয়েছে।

curl --location-trusted -X PUT \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_TOKEN_HERE" \
  -d '{"away": "home"}' \
  "https://developer-api.nest.com/structures/structure_id"

একটি তাপস্থাপকের উপর তাপমাত্রার স্কেল (সি / এফ) পরিবর্তন করুন

এই উদাহরণে, আমরা বাধ্য করব তাপমাত্রা স্কেল প্রদর্শন ডিগ্রী ফারেনহাইটে। আপনি যখন আপনার পণ্য তৈরি করছেন, আপনি প্রথমে তাপমাত্রার স্কেলটি পড়তেন এবং তারপরে সিদ্ধান্ত নেন যে আপনি কোনও লিখন কল দিয়ে এটি পরিবর্তন করতে চান কিনা।

: কল করতে, ক্ষেত্র এবং মান আপনি আপডেট করতে চান উল্লেখ "{"temperature_scale": "F"}" , এবং মূল পথ পরিবর্তন অন্তর্ভুক্ত করা /devices/thermostats এবং তাপস্থাপক device_id

কার্ল
curl --location-trusted -X PUT \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_TOKEN_HERE" \
  -d '{"temperature_scale": "F"}' \
  "https://developer-api.nest.com/devices/thermostats/device_id"
যাওয়া
package main

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

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

func main() {

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

    payload := strings.NewReader("{\"temperature_scale\": \"F\"}")

    req, _ := http.NewRequest("PUT", url, payload)

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

    customClient := http.Client{
        CheckRedirect: func(redirRequest *http.Request, via []*http.Request) error {
            redirRequest.Header = req.Header
            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(response)
    fmt.Println(string(body))

}
নোড.জেএস
"use strict"

const request = require('request');

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

/* Update with your token and thermostat device ID below */
var path = "/devices/thermostats/device_id";
var token = "YOUR_TOKEN_HERE";

var options = {
    "method": "PUT",
    "url": url + path,
    "body": JSON.stringify({"temperature_scale": "F"}),
    "headers": {
        "Authorization": "Bearer " + token,
        "Content-Type": "application/json"
    },
    "followRedirect": true,
    "removeRefererHeader": false
};

request(options, function(err, resp, data) {
    if (resp.statusCode == 307) { // indicates a redirect is needed
        options.url = resp.headers.location;
        request(options, function(err, resp, data) {
            console.log('response code: ' + resp.statusCode);
            if (err) console.log('Error: ' + err.message);
            console.log("data: " + data);
        });
    }
});

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/devices/thermostats/device_id"

token = "YOUR_TOKEN_HERE" # Update with your token

payload = "{\"temperature_scale\": \"F\"}"

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

response = requests.put(url, headers=headers, data=payload, allow_redirects=False)
if response.status_code == 307: # indicates a redirect is needed
    response = requests.put(response.headers['Location'], headers=headers, data=payload, allow_redirects=False)

print(response.text)
পাইথন ঘ
import http.client
from urllib.parse import urlparse

token = "YOUR_TOKEN_HERE" # Update with your token

payload = "{\"temperature_scale\": \"F\"}"

url = "/devices/thermostats/device_id"

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

if response.status == 307: # indicates a redirect is needed
    redirectLocation = urlparse(response.getheader("location"))
    conn = http.client.HTTPSConnection(redirectLocation.netloc)
    conn.request("PUT", url, payload, headers)
    response = conn.getresponse()
    if response.status != 200:
        raise Exception("Response failed: ", response.reason)

data = response.read()
print(data.decode("utf-8"))
জাভা
import java.io.IOException;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import okhttp3.MediaType;
import okhttp3.RequestBody;

public class NestWrite {

    public Request makeRequest(String url, String value) {
        MediaType mediaType = MediaType.parse("application/octet-stream");
        RequestBody body = RequestBody.create(mediaType, "{\"temperature_scale\": \"F\"}\"");
        String auth = "Bearer YOUR_TOKEN_HERE"; // Update with your token
        Request request = new Request.Builder()
        .url(url)
        .put(body)
        .addHeader("authorization", auth)
        .build();
        return request;
    }

    public static void main(String[] args) throws IOException
    {
        OkHttpClient client = new OkHttpClient();
        NestWrite postman = new NestWrite();

        String url = "https://developer-api.nest.com/devices/thermostats/device_id";
        String value = "{\"away\": \"home\"}";
        Request request = postman.makeRequest(url, value);
        Response response = client.newCall(request).execute();
        //System.out.println(response.toString());

        // Use the new URL in case of temporary redirect
        if(response.isRedirect()){
            String newUrl = response.header("Location");
            request = postman.makeRequest(newUrl, value);
            response = client.newCall(request).execute();
        }
        System.out.println(response.body().string());
    }
}

জাভা কোড উদাহরণ ব্যবহার করতে:

1. সর্বশেষ okhttp এবং Okio জার ফাইল ডাউনলোড করুন http://square.github.io/okhttp/ । উপরন্তু, এ Kotlin stdlib ফাইল ডাউনলোড https://mvnrepository.com/artifact/org.jetbrains.kotlin/kotlin-stdlib যদি okhttp সংস্করণটি উপর নির্ভর করে।

আপনার কোডটি তৈরি করুন।

3. নিম্নলিখিত ক্লাস-পাথ সেটিংস সহ প্রোগ্রামটি সংকলন এবং চালনা করুন।

: নীচের javac এবং জাভা আদেশগুলিতে আপনার লাইব্রেরি সংস্করণ সংখ্যা সাবস্টিটিউট
javac -cp .:okhttp-<ver>.jar:okio-<ver>.jar NestWrite.java
java -cp .:okhttp-<ver>.jar:okio-<ver>.jar:kotlin-stdlib-<ver>.jar NestWrite

উদাহরণস্বরূপ, যদি আপনি নিম্নলিখিত সংস্করণ 3.11.0, 2.1.0, এবং 1.3.0 থাকে, আপনার কমান্ড ভালো দেখাবে:
javac -cp .:okhttp-3.11.0.jar:okio-2.1.0.jar NestWrite.java
java -cp .:okhttp-3.11.0.jar:okio-2.1.0.jar:kotlin-stdlib-1.3.0.jar NestWrite

তাপস্থাপকের লক্ষ্যমাত্রার তাপমাত্রা পরিবর্তন করুন

আপনি ডিগ্রি ফারেনহাইট তাপমাত্রা স্কেল পরিবর্তন করার পরে, আপনি সেট করতে পারেন লক্ষ্য তাপমাত্রা । পূর্ববর্তী উদাহরণগুলির মতো একই প্রক্রিয়াটি ব্যবহার করুন এবং আপডেট করার জন্য ক্ষেত্র / মান নির্দিষ্ট করুন এবং মূলের পথটি পরিবর্তন করুন। লক্ষ্য করুন "strings" এবং numbers ভিন্নভাবে বিন্যাসিত করা হয়।

curl --location-trusted -X PUT \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_TOKEN_HERE" \
  -d '{"target_temperature_f": 70}' \
  "https://developer-api.nest.com/devices/thermostats/device_id"

একটি থার্মোস্টেটে একটি কাস্টমাইজড লেবেল সেট করুন

এছাড়াও আপনি পরিবর্তন করতে পারেন তাপস্থাপক ট্যাগ এটা একটি কাস্টমাইজড ডাক নাম দিতে। নামে একটি একক উক্তি অন্তর্ভুক্ত করতে আপনি ইউনিকোড অক্ষরটি ব্যবহার করতে পারেন 00 u0027।

curl --location-trusted -X PUT \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_TOKEN_HERE" \
  -d '{"label": "Kate\u0027s Room"}' \
  "https://developer-api.nest.com/devices/thermostats/device_id"

একটি ক্যামেরায় স্ট্রিমিং স্থিতি সেট করুন

এই উদাহরণে, আমরা আপনি যে ডিভাইসটি পরিবর্তন করতে চান প্রতিফলিত করার রুট পথ পরিবর্তন /devices/cameras/ device_id , এবং ক্যামেরা সেট রাষ্ট্র স্ট্রিমিং করার ON

curl --location-trusted -X PUT \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_TOKEN_HERE" \
  -d '{"is_streaming": true}' \
  "https://developer-api.nest.com/devices/cameras/device_id"

এপিআই পরীক্ষার জন্য পোস্টম্যান ব্যবহার করা

উপরের কার্ল কলগুলি সহজে পোস্টম্যানে প্রতিলিপি করা যায়। নীচের পদক্ষেপগুলি হিসেবে একটি তাপস্থাপক যেমন লক্ষ্য তাপমাত্রা পরিবর্তন কার্ল উদাহরণ উপরে।

PUT শিরোনাম লিখতে
লিখুন শরীর

আরও উন্নয়নের জন্য একটি আদ্যস্থল হিসাবে বিভিন্ন ভাষায় একটি কল অনুবাদ করতে পিয়ন মধ্যে Code লিঙ্কটি ব্যবহার করুন।