وب سرویس مقایسه و نقد و بررسی محصولات با هوش مصنوعی


فهرست:

  1. پیش نیاز
  2. اطلاعات وب سرویس مقایسه
  3. نمونه کدهای آماده
  4. نکات مهم
  5. درخواست و پاسخ
  6. توضیحات فیلدهای پاسخ
  7. مدل‌های داده
  8. دریافت بخشی از نتیجه مقایسه
  9. اطلاعات وب سرویس نقد و بررسی
  10. نمونه کدهای آماده

پیش نیاز:

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

1-اطلاعات وب سرویس مقایسه محصولات:

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

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

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" },
            onlineMode
        };

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

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

<?php

$client = new GuzzleHttp\Client();

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

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

import requests
import json

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

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"), true);
        String jsonBody = new Gson().toJson(body);

        HttpRequest request = HttpRequest.newBuilder()
                .uri(URI.create("https://api.icompare.ir/v2/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;
        private boolean onlineMode;

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

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

        public boolean getOnlineMode() {
            return onlineMode;
        }

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

        public void setOnlineMode(boolean onlineMode) {
            this.onlineMode = onlineMode;
        }
    }
}
                

const axios = require('axios');

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

    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"],
  "onlineMode": true
}

مثال 2:

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

پاسخ (Response)

{
  "status": "OK",
  "message": "success message",
  "data": {
    "winner": "product_1",
    "products": [
      {
        "name": "product_1",
        "faBrand": "",
        "enBrand": "Brand_A",
        "faCategory": "",
        "enCategory": "Electronics",
        "faCountry": "",
        "enCountry": "USA",
        "productionYear": "2021",
        "score": 90,
        "websiteUrl": "http://product1.com",
      },
      {
        "name": "product_2",
        "faBrand": "",
        "enBrand": "Brand_B",
        "faCategory": "",
        "enCategory": "Electronics",
        "faCountry": "",
        "enCountry": "Germany",
        "productionYear": "2019",
        "score": 80,
        "websiteUrl": "http://product2.com",
      }
    ],
    "description": "description in Persian",
    "table": "<table>...</table>"
  }
}

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

فیلدنوع دادهتوضیحات
statusstringوضعیت درخواست (مثال: "OK" برای موفقیت‌آمیز)
messagestringپیام مربوط به وضعیت درخواست
winnerstringنام محصول برنده بر اساس بالاترین امتیاز
productsarrayلیستی از محصولات همراه با جزئیات هر کدام
namestringنام محصول
scoreintامتیاز محصول (عدد بین 1 تا 100)
faBrandstringنام برند به فارسی
enBrandstringنام برند به انگلیسی
faCategorystringدسته‌بندی محصول به فارسی
enCategorystringدسته‌بندی محصول به انگلیسی
faCountrystringنام کشور سازنده به فارسی
enCountrystringنام کشور سازنده به انگلیسی
productionYearstringسال ساخت محصول
websiteUrlstringآدرس وبسایت رسمی محصول
descriptionstringتوضیحات مقایسه بین محصولات به فارسی
tablestringجدول مقایسه بین محصولات (به صورت HTML)

مدل ها:


public class Response
{
    public string 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 string faCategory { get; set; }
    public string enCategory { get; set; }
    public string faBrand { get; set; }
    public string enBrand { get; set; }
    public string faCountry { get; set; }
    public string enCountry { get; set; }
    public string websiteUrl { get; set; }
    public byte score { get; set; }
    public string productionYear { get; set; }
}

public class CompareRequest
{
    public List<string> products { get; set; }
    public bool onlineMode { 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 $faCategory;
    public $enCategory;
    public $faBrand;
    public $enBrand;
    public $faCountry;
    public $enCountry;
    public $websiteUrl;
    public $score;
    public $productionYear;
}

class CompareRequest
{
    public $products;
    public $onlineMode;
}
?>
                

from dataclasses import dataclass
from typing import List, Optional

                    @dataclass
class Product:
    name: str
    faCategory: str
    enCategory: str
    faBrand: str
    enBrand: str
    faCountry: str
    enCountry: str
    websiteUrl: str
    score: Optional[int] = None
    productionYear: Optional[int] = None

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

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

                    @dataclass
class CompareRequest:
    products: List[str]
    onlineMode: bool
                

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, faCategory, enCategory, faBrand, enBrand, 
                faCountry, enCountry, websiteUrl, score, productionYear) {
        this.name = name;
        this.faCategory = faCategory;
        this.enCategory = enCategory;
        this.faBrand = faBrand;
        this.enBrand = enBrand;
        this.faCountry = faCountry;
        this.enCountry = enCountry;
        this.websiteUrl = websiteUrl;
        this.score = score;
        this.productionYear = productionYear;
    }
}

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

import java.util.List;

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

    // Getters and Setters
}

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

    // Getters and Setters
}

public class Product {
    private String name;
    private String faCategory;
    private String enCategory;
    private String faBrand;
    private String enBrand;
    private String faCountry;
    private String enCountry;
    private String websiteUrl;
    private Byte score;
    private String productionYear;

    // Getters and Setters
}

public class CompareRequest {
    private List products;
    private boolean onlineMode;

    // Getters and Setters
}
                

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

2-اطلاعات وب سرویس نقد و بررسی محصولات:

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

curl -X POST "https://api.icompare.ir/v2/review" \
-H "X-Api-Key: your_api_key" \
-H "Content-Type: application/json" \
-d '{
  "product": "iPhone 12"
}'

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

        var body = new ReviewRequest
        {
            product = "iPhone 12"
        };

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

    public class ReviewRequest
    {
        public string product { get; set; }
    }
}
                

<?php

$client = new GuzzleHttp\Client();

$response = $client->post('https://api.icompare.ir/v2/review', [
    'headers' => [
        'X-Api-Key' => 'your_api_key',
    ],
    'json' => [
        'product' => 'iPhone 12',
    ],
]);

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

import requests
import json

url = "https://api.icompare.ir/v2/review"
headers = {
    "X-Api-Key": "your_api_key"
}
data = {
    "product": "iPhone 12"
}

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 com.google.gson.Gson;

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

        ReviewRequest body = new ReviewRequest("iPhone 12");
        String jsonBody = new Gson().toJson(body);

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

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

    static class ReviewRequest {
        private String product;

        public ReviewRequest(String product) {
            this.product = product;
        }

        public String getProduct() {
            return product;
        }

        public void setProduct(String product) {
            this.product = product;
        }
    }
}
                

const axios = require('axios');

async function review() {
    const url = 'https://api.icompare.ir/v2/review';
    const headers = {
        'X-Api-Key': 'your_api_key'
    };
    const data = {
        product: 'iPhone 12'
    };

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

review();