API xà phòng - Làm cách nào để nhận yêu cầu theo Giới hạn 10 dựa trên phân trang?


8

Tôi nhận được danh sách các sản phẩm sử dụng catalogProductList , lấy nó thời gian quá lâu để trả lại giá trị (xem ảnh chụp màn hình) thực sự sản phẩm của tôi đếm là 24K, làm thế nào tôi có thể chạy bằng cách sử dụng giới hạn 10 và nếu tôi nhấp vào trang 2 thì chỉ load tới 10 (Bây giờ tải mọi thứ sau đó chỉ in giá trị).

Bây giờ thiết kế của tôi trông như thế nào,

nhập mô tả hình ảnh ở đây

Mã số:

$proxy = new SoapClient('www.abc.com/api/v2_soap/?wsdl=1');
        $sessionId = $proxy->login((object)array('username' => 'abc', 'apiKey' => 'abc123'));
        $result = $proxy->catalogProductList((object)array('sessionId' => $sessionId->result, 'filters' => null));      
        return $result->result();

Lưu ý: https://datatables.net/examples/stomme/bootstrap4

Làm cách nào để chạy API xà phòng v2 ở giới hạn 10 và phải tải 10 lần tiếp theo khi tôi nhấp vào trang 2?


Bạn có bộ sưu tập sản phẩm tùy chỉnh nhận được? và hiện đang phân trang có hoạt động hay không
Rakesh Donga

Không phải bộ sưu tập sản phẩm tùy chỉnh, làm cho tất cả các sản phẩm và phân trang làm việc.
zus

vui lòng thêm mã của bạn vào câu hỏi của bạn
Rakesh Donga

@RakeshDonga Vừa được cập nhật với mã. Tôi đang sử dụng datatables.net/examples/stomme/bootstrap4 trong codeigniter của tôi.
zus

bạn đã thử điều này? stackoverflow.com/a/32745817/10748606
Rakesh Donga

Câu trả lời:


6

Thật không may, theo như tôi biết, bạn không thể đơn giản vượt qua giới hạn cho API SOAP.

Một cách tiếp cận sẽ hoạt động nếu bạn không cần lọc danh sách theo bất kỳ thuộc tính nào, muốn nhận tất cả các thuộc tính và không thiếu thực thể cho các sản phẩm (tức là bạn chưa bao giờ xóa sản phẩm). Đây là cách tiếp cận để có được các nhóm sản phẩm x dựa trên thực thể tối đa và một trang nhất định .

Dù sao, nếu các giả định trên không được chấp nhận cho yêu cầu của bạn, bạn không nên sử dụng nó :-)

//soap v2
$client = new SoapClient('http://yoursite/api/v2_soap/?wsdl=1');

$session = $client->login('login', 'password');

//get the maximum entity_id from your database
$maxID = 101; 

//get your page parameter beginning with 1 for the first page
$page = 2; 

 //set your pagesize
$pageSize = 20;

//this is thenumber of pages you will get
$pagesInPagination = ceil ($maxID / $pageSize);

$start = $maxID - ($page - 1) * $pageSize;

$end = $start - $pageSize;

$entityIdList = [];
for ($i = $start; $i > $end; $i--){
    $entityIdList[] = $i;
}


$complexFilter = array(
    'complex_filter' => array(
        array(
            'key' => 'entity_id',
            'value' => array('key' => 'in', 'value' => implode (',',$entityIdList))
        ),
    )
);
$result = $client->catalogProductList($session, $complexFilter);

foreach($result as $product) {
    $data = (array) $product;
    echo $data['product_id']. "\n";
}

1
<?php 
defined('BASEPATH') OR exit('No direct script access allowed'); 
error_reporting(-1); 
ini_set('display_errors', 'On'); 
class Live_stock extends CI_Controller { 

public function index() 
{ 


$this->load->view("header_view"); 

$proxy = new SoapClient('abc.com/api/v2_soap/?wsdl=1'); // TODO : change url 
$sessionId = $proxy->login((object)array('username' => 'abc', 'apiKey' => 'abc123')); 
$result["productArray"] = $proxy->catalogProductList((object)array('sessionId' => $sessionId->result, 'filters' => null)); 
$this->load->view("live_stock_view",$result); 

$this->load->view("footer_view"); 



} 
}

mã giới hạn ở đây cũng có sẵn

$in = array();
for ($i = ($page * $size) - $size; $i < ($page * $size); $i++) {
    $in[] = $i + 1;
}
$complexFilter = array('complex_filter' => 
    array(
        array(
            'key' => 'product_id',
            'value' => array(
                'key' => 'in', 
                'value' => join(",", $in)
            )
        )
    )
);

liên kết hữu ích


@ZUS tôi đã cập nhật câu trả lời của mình
Rakesh Donga
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.