مستندات API مقایسه محصولات


پیش نیاز:

  1. برای استفاده از وب سرویس هوش مصنوعی مقایسه محصولات ابتدا باید در سامانه می سنجم ثبت نام کنید
  2. سپس یک پلن حرفه ای تهیه نمایید
  3. سپس در حساب کاربری خود یک API Key ساخته و مقدار آنرا در هدر تمامی درخواست ها با کلید X-Api-Key ارسال نمایید

اطلاعات وب سرویس:

‌نمونه کدهای آماده:

curl -X POST "https://api.icompare.ir/v1/compare" \
-H "X-Api-Key: your_api_key" \
-H "Content-Type: application/json" \
-d '{
  "products": ["iPhone 12", "Samsung Galaxy S21"]
}'

public class Program
{
    public static async Task Compare()
    {
        var client = new HttpClient();
        client.DefaultRequestHeaders.Add("X-Api-Key", "your_api_key");

        var body = new CompareRequest
        {
            products = new List<string>() { "iPhone 12", "Samsung Galaxy S21" }
        };

        var response = await client.PostAsJsonAsync("https://api.icompare.ir/v1/compare", body);
        var result = await response.Content.ReadAsStringAsync();
        Console.WriteLine(result);
    }

    public class CompareRequest
    {
        public IEnumerable<string> products { get; set; }
    }
}
                

<?php

$client = new GuzzleHttp\Client();

$response = $client->post('https://api.icompare.ir/v1/compare', [
    'headers' => [
        'X-Api-Key' => 'your_api_key',
    ],
    'json' => [
        'products' => ['iPhone 12', 'Samsung Galaxy S21'],
    ],
]);

$result = $response->getBody()->getContents();
echo $result;
                

import requests
import json

url = "https://api.icompare.ir/v1/compare"
headers = {
    "X-Api-Key": "your_api_key"
}
data = {
    "products": ["iPhone 12", "Samsung Galaxy S21"]
}

response = requests.post(url, headers=headers, json=data)
result = response.text
print(result)
                

import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.util.List;
import com.google.gson.Gson;

public class Program {
    public static void main(String[] args) throws Exception {
        HttpClient client = HttpClient.newHttpClient();

        CompareRequest body = new CompareRequest(List.of("iPhone 12", "Samsung Galaxy S21"));
        String jsonBody = new Gson().toJson(body);

        HttpRequest request = HttpRequest.newBuilder()
                .uri(URI.create("https://api.icompare.ir/v1/compare"))
                .header("X-Api-Key", "your_api_key")
                .POST(HttpRequest.BodyPublishers.ofString(jsonBody))
                .build();

        HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
        System.out.println(response.body());
    }

    static class CompareRequest {
        private List<String> products;

        public CompareRequest(List<String> products) {
            this.products = products;
        }

        public List<String> getProducts() {
            return products;
        }

        public void setProducts(List<String> products) {
            this.products = products;
        }
    }
}
                

const axios = require('axios');

async function compare() {
    const url = 'https://api.icompare.ir/v1/compare';
    const headers = {
        'X-Api-Key': 'your_api_key'
    };
    const data = {
        products: ['iPhone 12', 'Samsung Galaxy S21']
    };

    try {
        const response = await axios.post(url, data, { headers });
        console.log(response.data);
    } catch (error) {
        console.error(error);
    }
}

compare();
                

نکات:

درخواست (Request)

مثال 1:

{
  "products": ["iPhone 12", "Samsung Galaxy S21"]
}

مثال 2:

{
  "products": ["15 نوفیآ لپآ", "یسکلگ S24 Ultra", "Apple iphone 13 pro max"]
}

پاسخ (Response)

{
  "status": "OK",
  "message": "success message",
  "data": {
    "winner": "product_1",
    "products": [
      {
        "name": "product_1",
        "score": 90,
        "brand": "Brand_A",
        "category": "Electronics",
        "productionYear": 2021,
        "website": "http://product1.com",
        "country": "USA"
      },
      {
        "name": "product_2",
        "score": 80,
        "brand": "Brand_B",
        "category": "Electronics",
        "productionYear": 2019,
        "website": "http://product2.com",
        "country": "Germany"
      }
    ],
    "description": "Product comparison text in Persian",
    "table": "<table> ... </table>"
  }
}

توضیحات فیلدهای پاسخ:

فیلدنوع دادهتوضیحات
statusintکد وضعیت HTTP (مثال: 200، 400، 404، 500 و غیره)
messagestringپیام مربوط به وضعیت درخواست (مثال: "موفقیت‌آمیز"، "کلید دسترسی معتبر نیست")
dataCompareResultداده‌های اصلی پاسخ که شامل جزئیات مقایسه محصولات است
winnerstringبرنده مقایسه بر اساس بالاترین امتیاز
productsarrayلیستی از محصولات همراه با جزئیات هر کدام
namestringنام محصول
scoreintامتیاز محصول
brandstringبرند محصول
categorystringدسته‌بندی محصول
productionYearint‌سال ساخت محصول
websitestringوب‌سایت رسمی محصول
countrystringکشور سازنده محصول
descriptionstringتوضیحات مقایسه بین محصولات
tablestringجدول مقایسه بین محصولات (به صورت HTML)

مدل ها:


public class Response
{
    public HttpStatusCode status { get; set; }
    public string message { get; set; }
    public CompareResult data { get; set; }
}

public class CompareResult
{
    public string winner { get; set; }
    public List<Product> products { get; set; }
    public string description { get; set; }
    public string table { get; set; }
}

public class Product
{
    public string name { get; set; }
    public byte score { get; set; }
    public string brand { get; set; }
    public string category { get; set; }
    public string country { get; set; }
    public int productionYear { get; set; }
    public string website { get; set; }
}

public class CompareRequest
{
    public List<string> products { get; set; }
}
                

<?php
class Response
{
    public $status;
    public $message;
    public $data;
}

class CompareResult
{
    public $winner;
    public $products;
    public $description;
    public $table;
}

class Product
{
    public $name;
    public $score;
    public $brand;
    public $category;
    public $country;
    public $productionYear;
    public $website;
}

class CompareRequest
{
    public $products;
}
?>
                

from dataclasses import dataclass
from typing import List

                            @dataclass
class Product:
    name: str
    score: int
    brand: str
    category: str
    country: str
    productionYear: int
    website: str

                            @dataclass
class CompareResult:
    winner: str
    products: List[Product]
    description: str
    table: str

                            @dataclass
class Response:
    status: int
    message: str
    data: CompareResult

                            @dataclass
class CompareRequest:
    products: List[str]
                

class Response {
    constructor(status, message, data) {
        this.status = status;
        this.message = message;
        this.data = data;
    }
}

class CompareResult {
    constructor(winner, products, description, table) {
        this.winner = winner;
        this.products = products;
        this.description = description;
        this.table = table;
    }
}

class Product {
    constructor(name, score, brand, category, country, productionYear, website) {
        this.name = name;
        this.score = score;
        this.brand = brand;
        this.category = category;
        this.country = country;
        this.productionYear = productionYear;
        this.website = website;
    }
}

class CompareRequest {
    constructor(products) {
        this.products = products;
    }
}
                

import java.util.List;

public class Response {
    private int status;
    private String message;
    private CompareResult data;

    // Getters and Setters
}

public class CompareResult {
    private String winner;
    private List<Product> products;
    private String description;
    private String table;

    // Getters and Setters
}

public class Product {
    private String name;
    private byte score;
    private String brand;
    private String category;
    private String country;
    private int productionYear;
    private String website;

    // Getters and Setters
}

public class CompareRequest {
    private List<String> products;

    // Getters and Setters
}
                

دریافت بخشی از نتیجه مقایسه (سرعت بیشتر)

شما می توانید بجای دریافت کامل نتیجه مقایسه تنها بخشی از نتیجه را دریافت کنید. برای مثال ممکن است که به جدول مقایسه نیازی نداشته باشید و فقط به اطلاعات محصولات و توضیحات نیاز داشته باشید و یا ممکن است بخواهید نتیجه را به صورت مرحله به مرحله دریافت کنید برای مثال ابتدا بخواهید اطلاعات محصولات را دریافت کرده سپس جدول مقایسه را دریافت کنید. اینکار می تواند در سرعت و تجربه کاربری برنامه شما موثر باشد.

نکته: مدل های Request و Response در وب سرویس های زیر همانند وب سرویس اصلی (Compare) می باشد و فقط URL متفاوت است

دریافت فقط اطلاعات محصولات:

  • URL: https://api.icompare.ir/v1/compare/getProductsInfo
  • Method: POST
  • Headers: X-Api-Key
  • Body: آرایه ای از نام محصولات به شکل جیسون

دریافت فقط توضیحات:

  • URL: https://api.icompare.ir/v1/compare/getDescription
  • Method: POST
  • Headers: X-Api-Key
  • Body: آرایه ای از نام محصولات به شکل جیسون

دریافت فقط جدول:

  • URL: https://api.icompare.ir/v1/compare/getTable
  • Method: POST
  • Headers: X-Api-Key
  • Body: آرایه ای از نام محصولات به شکل جیسون

دریافت اطلاعات محصولات همراه با توضیحات:

  • URL: https://api.icompare.ir/v1/compare/getProductsInfoAndDescription
  • Method: POST
  • Headers: X-Api-Key
  • Body: آرایه ای از نام محصولات به شکل جیسون

دریافت اطلاعات محصولات همراه با جدول:

  • URL: https://api.icompare.ir/v1/compare/getProductsInfoAndTable
  • Method: POST
  • Headers: X-Api-Key
  • Body: آرایه ای از نام محصولات به شکل جیسون

دریافت توضیحات همراه با جدول:

  • URL: https://api.icompare.ir/v1/compare/getDescriptionAndTable
  • Method: POST
  • Headers: X-Api-Key
  • Body: آرایه ای از نام محصولات به شکل جیسون