وب سرویس مقایسه و نقد و بررسی محصولات با هوش مصنوعی
فهرست:
پیش نیاز:
- برای استفاده از وب سرویس هوش مصنوعی مقایسه و ارزیابی محصولات ابتدا باید در پلتفرم می سنجم ثبت نام کنید
- سپس یک پلن حرفه ای تهیه نمایید
- سپس در حساب کاربری خود یک API Key ساخته و مقدار آنرا در هدر تمامی درخواست ها با کلید X-Api-Key ارسال نمایید
1-اطلاعات وب سرویس مقایسه محصولات:
- URL:
https://api.icompare.ir/v2/compare
- Method:
POST
- Headers:
X-Api-Key
- Body: آرایه ای از نام محصولات به شکل جیسون
نمونه کدهای آماده:
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();
نکات:
- API های می سنجم RESTful می باشند و درخواست ها و پاسخ ها به صورت JSON رد و بدل میشوند
- درخواست باید از نوع POST و شامل Api_Key و Body باشد
- Body باید شامل آرایه ای از نام محصولات مورد نظر برای مقایسه باشد
- تعداد محصولات برای مقایسه باید بین 2 تا 4 محصول باشد
- نام محصولات می تواند فارسی یا انگلیسی باشد (iphone 15 - آیفون 15)
- نام محصولات می تواند شامل برند یا بدون برند باشد (هوش مصنوعی انواع نام ها را تشخیص می دهد)
- نام هر محصول حداقل باید 3 کاراکتر و حداکثر 100 کاراکتر باشد
درخواست (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>"
}
}
توضیحات فیلدهای پاسخ:
فیلد | نوع داده | توضیحات |
---|---|---|
status | string | وضعیت درخواست (مثال: "OK" برای موفقیتآمیز) |
message | string | پیام مربوط به وضعیت درخواست |
winner | string | نام محصول برنده بر اساس بالاترین امتیاز |
products | array | لیستی از محصولات همراه با جزئیات هر کدام |
name | string | نام محصول |
score | int | امتیاز محصول (عدد بین 1 تا 100) |
faBrand | string | نام برند به فارسی |
enBrand | string | نام برند به انگلیسی |
faCategory | string | دستهبندی محصول به فارسی |
enCategory | string | دستهبندی محصول به انگلیسی |
faCountry | string | نام کشور سازنده به فارسی |
enCountry | string | نام کشور سازنده به انگلیسی |
productionYear | string | سال ساخت محصول |
websiteUrl | string | آدرس وبسایت رسمی محصول |
description | string | توضیحات مقایسه بین محصولات به فارسی |
table | string | جدول مقایسه بین محصولات (به صورت 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-اطلاعات وب سرویس نقد و بررسی محصولات:
- URL:
https://api.icompare.ir/v2/review
- Method:
POST
- Headers:
X-Api-Key
- Body: نام محصول به شکل جیسون
نمونه کدهای آماده:
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();