Fake REST API для тестирования (JSON)

REST API может понадобится:

  • При разработке нового проекта
  • При тестировнии нового программного инструмента
  • Когда хочеться пощупать очередной фреймворк
  • Просто нужны json данные

Всегда можно создать массив и читать его или обращаться к какому-нибудь API. Однако есть специальный инструмент, чтобы не искать "что-нибудь".

Fake Rest API (jsonplaceholder)

JSONPlaceholder - Live running version. Можно сделать свой Fake Server, проект доступен на github

Ресурсы

Маршрут
/posts 100 items
/comments 500 items
/albums 100 items
/photos 5000 items
/todos 200 items
/users 10 items

Маршруты

HTTP метод Маршрут
GET /posts
GET /posts/1
GET /posts/1/comments
GET /comments?postId=1
GET /posts?userId=1
POST /posts
PUT /posts/1
PATCH /posts/1
DELETE /posts/1

Например http://jsonplaceholder.typicode.com/posts вернёт

[
  {
    "userId": 1,
    "id": 1,
    "title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
    "body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto"
  },
  {
    "userId": 1,
    "id": 2,
    "title": "qui est esse",
    "body": "est rerum tempore vitae\nsequi sint nihil reprehenderit dolor beatae ea dolores neque\nfugiat blanditiis voluptate porro vel nihil molestiae ut reiciendis\nqui aperiam non debitis possimus qui neque nisi nulla"
  },
  {
    "userId": 1,
    "id": 3,
    "title": "ea molestias quasi exercitationem repellat qui ipsa sit aut",
    "body": "et iusto sed quo iure\nvoluptatem occaecati omnis eligendi aut ad\nvoluptatem doloribus vel accusantium quis pariatur\nmolestiae porro eius odio et labore et velit aut"
  },
  ...

Видео от Traversy Media по работе Fake Server

Альтернативный сервис

Test your front-end against a real API

Запрос

var xhr = new XMLHttpRequest();
xhr.open("GET", "https://reqres.in/api/products/3", true);
xhr.onload = function(){
    console.log(xhr.responseText);
};
xhr.send();

Ответ

{
    "data":{
        "id":3,
        "name":"true red",
        "year":2002,
        "pantone_value":"19-1664"
    }
}

Mock Service Worker

Еще одно интересное решение mswjs.io - перехват запросов на сетевом уровне. Библиотека, которая использует API Service Worker для подмены реальных запросов.

npm install msw --save-dev

Надо самостоятельно создать json и скормить в эту бибилотеку.

// src/mocks/handlers.js
import { rest } from 'msw'

export const handlers = [
  rest.post('/login', (req, res, ctx) => {
    // Persist user's authentication in the session
    sessionStorage.setItem('is-authenticated', 'true')
    return res(
      // Respond with a 200 status code
      ctx.status(200),
    )
  }),
  rest.get('/user', (req, res, ctx) => {
    // Check if the user is authenticated in this session
    const isAuthenticated = sessionStorage.getItem('is-authenticated')
    if (!isAuthenticated) {
      // If not authenticated, respond with a 403 error
      return res(
        ctx.status(403),
        ctx.json({
          errorMessage: 'Not authorized',
        }),
      )
    }
    // If authenticated, return a mocked user details
    return res(
      ctx.status(200),
      ctx.json({  // вот тут положить json
        username: 'admin',
      }),
    )
  }),
]

Для генерации данных удобно использовать faker.js

Похожие записи

Идемпотентные методы HTTP

Методы GET, PUT, DELETE являются идемпотентными - многократные идентичные запросы такого типа приводят к такому же эффекту, как и от одиночного запроса, при условии что не сервер не меняет своё состояние между запросами