nodejs shopify rest api pagination - javascript

I'm trying to get all products from Shopify store via rest API and with
direction=next&last_id=id
it does not return all products.
I see that there is a different way to paginate products endpoint with headers but I'm not pretty good with NodeJS and don't know how to strip strings that I receive to have only needed parameters.
Below is response example and I need only page_info from rel="next" element
<https://xxx.myshopify.com/admin/api/2022-10/products.json?limit=250&page_info=xxx>; rel="previous", <https://xxx.myshopify.com/admin/api/2022-10/products.json?limit=250&page_info=xxx>; rel="next"
any ideas?
splitting to array and search by chars

Related

How to get a few Products from a store satisfying some string using rest API?

I want to get 4 products from Magento store. These items contain "food" string in their SKUs. SKU can be something like "FoodDietic", "TastyFood" and so on. I have done a research to understand how to use the searchCriteria but I still can not. This is the request I used but it is not what I need.
https://magento.am/rest/V1/products/?searchCriteria[filter_groups][0][filters][0][field]=category_gear&searchCriteria[filter_groups][0][filters][0][value]=86&searchCriteria[filter_groups][0][filters][0][condition_type]=finset&fields=items[sku,price,name]
What kind of get request should I send to get all my 4 Items?
Here is what I have read: Magento Get Request

Can i pull data of multiple companies using the Alphavantage API?

For example, if I want to list out all the stocks on NSE/BSE and their closing price, is there a way to do this without using the API for each individual stock?
Can you pull data of more than one company from the API without using the URL repeatedly. Also if possible can we get the data of all the companies listed in the NSE/BSE.
No, you cannot. You have to pull each individual stock ticker.

Multiple ID's in REST endpoints

coming from a Wordpress background my knowledge on using REST API's is quite limited. I've started using JSON server (dummy local rest API) to learn the ins and outs.
Looking at the documentation, there doesn't seem to be any way to delete, update or post multiple items in one go? The PATCH, POST, PUT and DELETE methods all require an endpoint structured with one trailing ID eg /posts/1. I've tried both sending multiple ID's in the url ie ?id=1&id=2 and also as part of the request body but neither seem to work.
Is this how typical REST API's work, and if so does this mean i would have to loop though ID's and send multiple requests for each, or am i missing the point??
With REST, you don't typically have bulk operations, unless you are, say, deleting a collection. A POST request usually inserts a single entity into a collection, although that doesn't mean that you CANNOT construct the endpoint to accept an array of entities to insert into the collection. When I design a RESTful endpoint for POSTing a new resource, I only accept a single entity. I leave it up to the client to perform multiple POST requests in parallel to reduce the time it takes to create the list of entities.

GET the join of two tables using a REST api

I'm fairly new to using REST to retrieve data from a database. I'm hoping to make a website which has an SQLite database on it. It seems Backbone.js will be a good fit for what I'm trying to do, and it says they interact well with a RESTful API to get data from a database. I read Understand Backbone.js REST calls to get a better understanding of how REST works.
I found this simple API https://github.com/alixaxel/ArrestDB to get data from an SQLite database.
What I am still not getting is how (if possible) to JOIN two tables.
For example, I have a Books table with BookID, Title and AuthorID, and an Authors table with AuthorID, First Name, Last Name, Age. AuthorID in the Books table is a foreign key to the Authors table.
If I use ArrestDB and go to http://api.mysite.com/books/ I'll get a JSON response of the books, and http://api.mysite.com/authors/ I'll get a JSON response from the Authors. How do I get all the books with the full information of their respective authors? This would be accomplished in SQL using a JOIN. Do I have to merge them manually in Javascript?

How can I chunk results (lazy load?) without rewriting my whole application (Laravel + jQuery, SPA style)

I've developed a web application with the concept of Single Page Application but none of the modern techs and frameworks.
So I have a jQuery page that dynamically requests data to localhost - a Laravel instance that compiles the entries in the DB (within a given time interval).
So the client wants to see all the entries for last week, the app works fine. But if he wants to see the results for the whole last month... well, they're so many that the default execution time of the php ins't enough to process all the data (30 seconds). I can easily override this, of course, but then the jQuery client will loop through these arrays of objects and do stuff with them (sort, find, sum...). So I'm not even sure jQuery can handle this many data.
So my question can be broken in two:
Can laravel ->paginate() be used so the ajax request of jQuery can also chunk the data? How does this work (hopefully in a manner that doesn't force me to rewrite all the code).
How could I store large amounts of information on the client? It's only temporary but the users will hang around for a considerable amount of time on my webpage, and I don't want them to wait 5 minutes every time they press a button
Thanks.
If you want to provide an interface to a large amount of data stored in a backed, you should paginate the data. This is a standard approach, so I'm sure your client will be ok with that.
Using pagination is pretty simple - see the docs for Laravel 5.0 here: http://laravel.com/docs/5.0/pagination
In order to paginate results in the backend, you need to call paginate($perPage) on your query instead of get() in your controller, like that:
$users = User::whereIsActive(true)->paginate(15);
This will return paginated result with 15 records per page. Page number will be taken from page parameter of the request. In order to get 3rd page of users, you'll need your frontend jQuery app to send a request to URL like:
/users?page=3
I don't recommend caching data in the frontend application. The data can be changed by some other user and you won't even know about it. And with pagination, your requests should be lightweight enough to stop worrying about a request sent to fetch every page of results.
Not sure if you're subscribed to laracasts but Jeffery Way is amazing in explaining features of Laravel and I highly recommend his videos.
In short you can paginate the results, then on the view when you call the foreach on your items you can array_chunk() the results to display them how you need to. But the paginated results are going to be fetched using a query in the URL, and i'm not sure that is what you want if you're already using a lot of jQuery to keep everything on the same page.
https://laracasts.com/lessons/crazy-simple-pagination
But assuming you're already paginating the results with whatever jQuery you've already written for the json data...
You could also use a query scope to get the data you need to for the amount of time to scope to create a simple api to use with ajax. I think that's probably what you're looking for.
So here's what I would do assuming you're already doing some pagination manually with your javascript.
Create a few query scopes to filter the data for different lengths of time
Create simple routes to fetch results from URI using the query scopes
Get the json data from the route preforming an ajax requests to the URIs created
More information on Query Scopes: http://laravel.com/docs/5.1/eloquent#query-scopes

Categories

Resources