json-server / db.json (lowdb) / faker.js in Pharo/Zinc ?
Hi Sven and all, Disclaimer: just another rather not important query (mainly for fun so donât hesitate to tell me to use the node packages instead ;-) ) To show API to students, I sometimes use https://jsonplaceholder.typicode.com. Itâs nice to play with client requests. I wonder if this would be interesting to have such tools in Pharo/Zn. Maybe it exists already somehow (for Teapot eventually) ? https://medium.com/codingthesmartway-com-blog/create-a-rest-api-with-json-se...
From their GitHub, I discovered json-server + lowdb (based on lowdash) => all nodes packages. https://github.com/typicode.
It uses a db file db.json and I like such simple « databases ». I know they're not real db. https://github.com/typicode/lowdb To me, it could nearly be to me an elegant personal db even if I think this is mostly used to test APIâs. Indeed, Itâs often used in conjunction with node package faker (https://github.com/marak/Faker.js/ (https://github.com/marak/Faker.js/). I would like to use that to generate static websites from Ecstatic. The placeholder default website has limitations. For instance, the following request creates a new post (but then you cannot see the result if you query for posts just after) I wanted to go past the limitation of the placeholder site (the db.json cannot be written). I can of course use the node package but you know :) Might be not so straight to port though. So there are probably three open questions in this post: 1) lowdb (I know this is not a database but itâs handy and Iâd like such usage in static website generation in conjunction with Ecstatic). Any already existing experiments maybe ? I donât think Voyage can do that. 2) the API json-server based on routes (maybe a job for Teapot) ? 3) the faker package as a fun exercice. What others think ? My priority would go for having some kind of lowdb (and Iâm pretty sure there are experiments around that - It reminds me a bit sandstonedb from Ramon http://onsmalltalk.com/sandstonedb-simple-activerecord-style-persistence-in-.... Cheers, Cédrick
Hi Cédrick, I think making something like jsonplaceholder would be quite easy. Do you know about the Zinc-REST package/group ? It contains an example in its tests, ZnExampleStorageRestServerDelegate with unit tests in ZnExampleStorageRestServerDelegateTest which implements a generic data storage. Have a look ! BTW, recently I added ZnClient>>#forJsonREST, which uses either STONJSON (which is in the image) or NeoJSON (when loaded), so that you can more elegant code for this use case: ZnClient new url: 'https://jsonplaceholder.typicode.com/posts'; forJsonREST; get. ZnClient new url: 'https://jsonplaceholder.typicode.com/posts'; forJsonREST; contents: { #title->'Test'. #body->String loremIpsum } asDictionary; post. Sven
On 6 Jun 2020, at 09:44, Cédrick Béler <cdrick65@gmail.com> wrote:
Hi Sven and all,
Disclaimer: just another rather not important query (mainly for fun so donât hesitate to tell me to use the node packages instead ;-) )
To show API to students, I sometimes use https://jsonplaceholder.typicode.com. Itâs nice to play with client requests. I wonder if this would be interesting to have such tools in Pharo/Zn. Maybe it exists already somehow (for Teapot eventually) ? https://medium.com/codingthesmartway-com-blog/create-a-rest-api-with-json-se...
From their GitHub, I discovered json-server + lowdb (based on lowdash) => all nodes packages. https://github.com/typicode.
<GraphiqueCollé-6.tiff>
It uses a db file db.json and I like such simple « databases ». I know they're not real db. https://github.com/typicode/lowdb
To me, it could nearly be to me an elegant personal db even if I think this is mostly used to test APIâs. Indeed, Itâs often used in conjunction with node package faker (https://github.com/marak/Faker.js/ (https://github.com/marak/Faker.js/). I would like to use that to generate static websites from Ecstatic.
The placeholder default website has limitations. For instance, the following request creates a new post (but then you cannot see the result if you query for posts just after)
<GraphiqueColleÌ-5.png>
I wanted to go past the limitation of the placeholder site (the db.json cannot be written). I can of course use the node package but you know :) Might be not so straight to port though.
So there are probably three open questions in this post: 1) lowdb (I know this is not a database but itâs handy and Iâd like such usage in static website generation in conjunction with Ecstatic). Any already existing experiments maybe ? I donât think Voyage can do that. 2) the API json-server based on routes (maybe a job for Teapot) ? 3) the faker package as a fun exercice.
What others think ? My priority would go for having some kind of lowdb (and Iâm pretty sure there are experiments around that - It reminds me a bit sandstonedb from Ramon http://onsmalltalk.com/sandstonedb-simple-activerecord-style-persistence-in-....
Cheers,
Cédrick
Hi,
Hi Cédrick,
I think making something like jsonplaceholder would be quite easy.
Do you know about the Zinc-REST package/group ?
I knew but forget about it !
It contains an example in its tests, ZnExampleStorageRestServerDelegate with unit tests in ZnExampleStorageRestServerDelegateTest which implements a generic data storage. Have a look !
Will definitely look again at it. Is it using a json file as db too ? I guess that be easy to add if not. Iâll look at it soon. Any feedback about faker ? Thatâd be a fun project to do in Pharo. There are lots of them. I donât know which one to look at more in detail (js, ruby, python, php... ?). https://github.com/faker-ruby/faker https://github.com/marak/Faker.js/ https://github.com/joke2k/faker ⦠Anybody knows whatâs the most « complete » or elegant ?
BTW, recently I added ZnClient>>#forJsonREST, which uses either STONJSON (which is in the image) or NeoJSON (when loaded), so that you can more elegant code for this use case:
Uhm right, I always forget and use the old way (with #contentReader: ). Thanks for the information Sven, Cédrick
ZnClient new url: 'https://jsonplaceholder.typicode.com/posts'; forJsonREST; get.
ZnClient new url: 'https://jsonplaceholder.typicode.com/posts'; forJsonREST; contents: { #title->'Test'. #body->String loremIpsum } asDictionary; post.
Sven
On 6 Jun 2020, at 09:44, Cédrick Béler <cdrick65@gmail.com> wrote:
Hi Sven and all,
Disclaimer: just another rather not important query (mainly for fun so donât hesitate to tell me to use the node packages instead ;-) )
To show API to students, I sometimes use https://jsonplaceholder.typicode.com. Itâs nice to play with client requests. I wonder if this would be interesting to have such tools in Pharo/Zn. Maybe it exists already somehow (for Teapot eventually) ? https://medium.com/codingthesmartway-com-blog/create-a-rest-api-with-json-se...
From their GitHub, I discovered json-server + lowdb (based on lowdash) => all nodes packages. https://github.com/typicode.
<GraphiqueCollé-6.tiff>
It uses a db file db.json and I like such simple « databases ». I know they're not real db. https://github.com/typicode/lowdb
To me, it could nearly be to me an elegant personal db even if I think this is mostly used to test APIâs. Indeed, Itâs often used in conjunction with node package faker (https://github.com/marak/Faker.js/ (https://github.com/marak/Faker.js/). I would like to use that to generate static websites from Ecstatic.
The placeholder default website has limitations. For instance, the following request creates a new post (but then you cannot see the result if you query for posts just after)
<GraphiqueColleÌ-5.png>
I wanted to go past the limitation of the placeholder site (the db.json cannot be written). I can of course use the node package but you know :) Might be not so straight to port though.
So there are probably three open questions in this post: 1) lowdb (I know this is not a database but itâs handy and Iâd like such usage in static website generation in conjunction with Ecstatic). Any already existing experiments maybe ? I donât think Voyage can do that. 2) the API json-server based on routes (maybe a job for Teapot) ? 3) the faker package as a fun exercice.
What others think ? My priority would go for having some kind of lowdb (and Iâm pretty sure there are experiments around that - It reminds me a bit sandstonedb from Ramon http://onsmalltalk.com/sandstonedb-simple-activerecord-style-persistence-in-....
Cheers,
Cédrick
participants (2)
-
Cédrick Béler -
Sven Van Caekenberghe