مستندات API مقایسه محصولات
پیش نیاز:
- برای استفاده از وب سرویس هوش مصنوعی مقایسه محصولات ابتدا باید در سامانه می سنجم ثبت نام کنید
- سپس یک پلن حرفه ای تهیه نمایید
- سپس در حساب کاربری خود یک API Key ساخته و مقدار آنرا در هدر تمامی درخواست ها با کلید X-Api-Key ارسال نمایید
اطلاعات وب سرویس:
- URL:
https://api.icompare.ir/v1/compare
- Method:
POST
- Headers:
X-Api-Key
- Body: آرایه ای از نام محصولات به شکل جیسون
نمونه کدهای آماده:
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();
نکات:
- API های می سنجم RESTful می باشند و درخواست ها و پاسخ ها به صورت JSON رد و بدل میشوند
- درخواست باید از نوع POST و شامل Api_Key و Body باشد
- Body باید شامل آرایه ای از نام محصولات مورد نظر برای مقایسه باشد
- تعداد محصولات برای مقایسه باید بین 2 تا 4 محصول باشد
- نام محصولات می تواند فارسی یا انگلیسی باشد (iphone 15 - آیفون 15)
- نام محصولات می تواند شامل برند یا بدون برند باشد (هوش مصنوعی انواع نام ها را تشخیص می دهد)
- نام هر محصول حداقل باید 3 کاراکتر و حداکثر 100 کاراکتر باشد
درخواست (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>"
}
}
توضیحات فیلدهای پاسخ:
فیلد | نوع داده | توضیحات |
---|---|---|
status | int | کد وضعیت HTTP (مثال: 200، 400، 404، 500 و غیره) |
message | string | پیام مربوط به وضعیت درخواست (مثال: "موفقیتآمیز"، "کلید دسترسی معتبر نیست") |
data | CompareResult | دادههای اصلی پاسخ که شامل جزئیات مقایسه محصولات است |
winner | string | برنده مقایسه بر اساس بالاترین امتیاز |
products | array | لیستی از محصولات همراه با جزئیات هر کدام |
name | string | نام محصول |
score | int | امتیاز محصول |
brand | string | برند محصول |
category | string | دستهبندی محصول |
productionYear | int | سال ساخت محصول |
website | string | وبسایت رسمی محصول |
country | string | کشور سازنده محصول |
description | string | توضیحات مقایسه بین محصولات |
table | string | جدول مقایسه بین محصولات (به صورت 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: آرایه ای از نام محصولات به شکل جیسون