<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Nikolay</title>
    <description>The latest articles on DEV Community by Nikolay (@znick1982).</description>
    <link>https://dev.to/znick1982</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F141285%2Fd4819499-e314-470d-9d94-8bedd45694b3.jpeg</url>
      <title>DEV Community: Nikolay</title>
      <link>https://dev.to/znick1982</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/znick1982"/>
    <language>en</language>
    <item>
      <title>How to fake your API for TODO list</title>
      <dc:creator>Nikolay</dc:creator>
      <pubDate>Wed, 17 Jul 2019 23:24:10 +0000</pubDate>
      <link>https://dev.to/znick1982/how-to-fake-your-api-for-todo-list-5e85</link>
      <guid>https://dev.to/znick1982/how-to-fake-your-api-for-todo-list-5e85</guid>
      <description>&lt;p&gt;In the previous post, I discussed the necessity of having a REST API mocking tool for front-end and back-end developers as a simple layer which gives understanding about communication Interfaces for both.&lt;/p&gt;

&lt;p&gt;Here is an example of how to create simple mocks for a TODO list application with &lt;a href="https://fake.rest" rel="noopener noreferrer"&gt;https://fake.rest&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let's imagine we have a ready TODO list SPA application but the back-end is not available.&lt;br&gt;
And for example we need to implement work with following methods:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Add Task&lt;/li&gt;
&lt;li&gt;Delete Task&lt;/li&gt;
&lt;li&gt;Update Task&lt;/li&gt;
&lt;li&gt;Get task list&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After login lets create our first endpoint mock:&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv7iql5vpu6x9ozvo8ihc.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv7iql5vpu6x9ozvo8ihc.gif" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the "Response body" let's add the following template and Save it.&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcioocu28h8tjrxumxe86.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcioocu28h8tjrxumxe86.png" width="800" height="392"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After endpoint created we can test it in any HTTP client tool.&lt;br&gt;
I chose &lt;a href="https://insomnia.rest/download/" rel="noopener noreferrer"&gt;Insomnia&lt;/a&gt;.&lt;br&gt;
And got:&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqms7nm39bg82ttlejst4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqms7nm39bg82ttlejst4.png" width="800" height="445"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For simplicity methods &lt;code&gt;task/delete&lt;/code&gt; and &lt;code&gt;task/update&lt;/code&gt; will use the same template for the response, so I just copied it from the &lt;code&gt;task/add&lt;/code&gt; method&lt;/p&gt;

&lt;p&gt;Next what we need to is generate the list of the tasks:&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9fb0vjyxb3edwgph1h5a.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9fb0vjyxb3edwgph1h5a.gif" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And let's generate an array of tasks from 5 to 10:&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffrk0olpv53omj8n1qbnn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffrk0olpv53omj8n1qbnn.png" width="800" height="435"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Check again in the Insomnia:&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4n612ts62szy07obwh1t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4n612ts62szy07obwh1t.png" width="800" height="1014"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Looks like it works.&lt;/p&gt;

&lt;p&gt;You can try it your own with the following URLs:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;POST https://api.fake.rest/189bf93b-4d78-4f00-86ac-76d87cfccbd1/task/add
POST https://api.fake.rest/189bf93b-4d78-4f00-86ac-76d87cfccbd1/task/update
POST https://api.fake.rest/189bf93b-4d78-4f00-86ac-76d87cfccbd1/task/delete
GET https://api.fake.rest/189bf93b-4d78-4f00-86ac-76d87cfccbd1/task/list
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  How to use it in code
&lt;/h3&gt;

&lt;p&gt;In my front end projects, I often use the &lt;code&gt;axios&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;With &lt;code&gt;axios&lt;/code&gt; snippet might be:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;axios&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;axios&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;ax&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;axios&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;baseURL&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;https://api.fake.rest/189bf93b-4d78-4f00-86ac-76d87cfccbd1/&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;sendTask&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;url&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;task&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;
  &lt;span class="nx"&gt;ax&lt;/span&gt;
    &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;post&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;url&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;task&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;then&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;res&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;catch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="k"&gt;throw&lt;/span&gt; &lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;});&lt;/span&gt;


&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;fetchTaskList&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;
  &lt;span class="nx"&gt;ax&lt;/span&gt;
    &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`task/list`&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;then&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;res&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;catch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="k"&gt;throw&lt;/span&gt; &lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;});&lt;/span&gt;


&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;addTask&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;task&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;
  &lt;span class="nf"&gt;sendTask&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`task/add`&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;task&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;updateTask&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;task&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;
  &lt;span class="nf"&gt;sendTask&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`task/update`&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;task&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;deleteTask&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;task&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;
  &lt;span class="nf"&gt;sendTask&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`task/delete`&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;task&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To work with real API when it's ready simply change the &lt;code&gt;baseURL&lt;/code&gt; property.&lt;/p&gt;

&lt;p&gt;This is my first introduction of Fake.REST I hope you like it and found it useful.&lt;/p&gt;

&lt;p&gt;If you have suggestions about how to improve the service please write me in the comments.&lt;/p&gt;

&lt;p&gt;Thank you.&lt;/p&gt;

</description>
      <category>angular</category>
      <category>node</category>
      <category>react</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Does front end developer need a mock API Service?</title>
      <dc:creator>Nikolay</dc:creator>
      <pubDate>Fri, 05 Apr 2019 20:28:00 +0000</pubDate>
      <link>https://dev.to/znick1982/do-front-end-developer-needs-a-mock-api-service-2kcc</link>
      <guid>https://dev.to/znick1982/do-front-end-developer-needs-a-mock-api-service-2kcc</guid>
      <description>&lt;p&gt;Hello. &lt;br&gt;
My name is Nikolay. &lt;br&gt;
I am a front web developer. I am currently participating in a small enterprise project. &lt;br&gt;
There are two of us. Front end developer and Back end developer.&lt;/p&gt;

&lt;p&gt;The thing is that sometimes we are working asynchronously, I mean, one day when I  need to use some REST API it's not ready. Another day its done but contains not enough data and it will take some days to change it according to new requirements. On my practice that situation where several times in some projects.&lt;/p&gt;

&lt;p&gt;The first solution came up to me, is to generate fake data on the client and simulate request to the server. The advantage of this is that it's up to you and you don't need anyone to fix this. The disadvantage is your project build contains the code with fake data and fake data generators go to your build to. And sometimes it's big.&lt;/p&gt;

&lt;p&gt;As the second solution, I was looking for online mock API services. I found a few but no one did not match my requirements.&lt;/p&gt;

&lt;p&gt;Wasn't thinking too long, I decided to create my own mock API service.&lt;/p&gt;

&lt;p&gt;And of course with my tricky requirements:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Dynamic response generation via Mustache or another template engine,&lt;/li&gt;
&lt;li&gt;Url matching support. For example: &lt;code&gt;/getClient/:clientId&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Custom media library. To provide links to real data files or images you want.&lt;/li&gt;
&lt;li&gt;Work with teams on projects.&lt;/li&gt;
&lt;li&gt;Request History&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What do you thinking of that guys?&lt;br&gt;
Is this all make sense or I am fighting with windmills?&lt;/p&gt;

&lt;p&gt;P.S.&lt;br&gt;
If you are interested in my service please take a look on the prototype on &lt;a href="https://fake.rest"&gt;https://fake.rest&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>react</category>
      <category>productivity</category>
      <category>fakerest</category>
    </item>
  </channel>
</rss>
