Jsonplaceholder API

Данный раздел содержит документацию Jsonplaceholder API AJAX сервера Dan.IT Education. Здесь будут описаны примеры запросов на сервер используя Fetch API, все возможные cущности и как с ними работать.

Всего есть 6 сущностей:

У каждой из них есть свои особенности. У пользователей есть альбомы, посты и списки дел (to-do). У постов есть комментарии, у альбомов есть фотографии. Все 6 сущностей поддерживают следующие CRUD операции:

get /api/json/{entity} - получить список всех сущностей данного типа

get /api/json/{entity}/{id} - получить один элемент данного типа

post /api/json/{entity} - "создать" элемент данного типа.
Сервер только имитирует создание ресурса, но не сохраняет его в базе данных

put /api/json/{entity}/{id} - "заменить" ресурс данного типа.
Изменение лишь имитируется и не сохраняется в базе данных

patch /api/json/{entity}/{id} - "заменить" часть ресурса данного типа (по принципу работы
метода Object.assign). Изменение лишь имитируется и не сохраняется в базе данных

delete /api/json/{entity}/{id} - "удалить" ресурс данного типа.
Изменение имитируется и не сохраняется в базе данных.

Также есть следующие специальные операции для отдельных типов:

get /api/json/users/{id}/posts - возвращает все посты пользователя

get /api/json/users/{id}/albums - возвращает все альбомы пользователя

get /api/json/users/{id}/todos - возвращает все todo списки пользователя

get /api/json/posts/{id}/comments - возвращает все комментарии поста

get /api/json/albums/{id}/photos - возвращает все фото из альбома

Некоторые ендпоинты get /api/json/{entity} поддерживают необязательный request-параметр с id родительской сущности

get /api/json/posts?userId={id} - возвращает все посты пользователя

get /api/json/albums?userId={id} - возвращает все альбомы пользователя

get /api/json/todos?userId={id} - возвращает все todo списки пользователя

get /api/json/comments?postId={id} - возвращает все комментарии поста

get /api/json/photos?albumId={id} - возвращает все фото из альбома

Получить ресурс:

fetch("http://ajax.test-danit.com/api/json/users/1", {
        method: 'GET'
})
  .then(response => response.json())
  .then(json => console.log(json))

// Пример ответа
{
    "id": 1,
    "name": "Leanne Graham",
    "username": "Bret",
    "email": "Sincere@april.biz",
    "address": {
        "street": "Kulas Light",
        "suite": "Apt. 556",
        "city": "Gwenborough",
        "zipcode": "92998-3874",
        "geo": {
            "lat": "-37.3159",
            "lng": "81.1496"
        }
    },
    "phone": "1-770-736-8031 x56442",
    "website": "hildegard.org",
    "company": {
        "name": "Romaguera-Crona",
        "catchPhrase": "Multi-layered client-server neural-net",
        "bs": "harness real-time e-markets"
    }
}

Показать все ресурсы:

fetch("http://ajax.test-danit.com/api/json/users/"), {
        method: 'GET'
})
  .then(response => response.json())
  .then(json => console.log(json))

// Пример ответа
[
{"id": 1,"name": "Leanne Graham", /* ... */},
{"id": 2, "name": "Ervin Howell", /* ... */},
/* ... */
]

Создать ресурс:

fetch("http://ajax.test-danit.com/api/json/users/", {
    method: 'POST',
    body: JSON.stringify({
      userId: 1,
      name: 'John',
      fullName: ['John', 'Marston']
    }),
    headers: {
      'Content-Type': 'application/json'
    }
  })
  .then(response => response.json())
  .then(json => console.log(json))

// Пример ответа
{
  id: 101,
  name: 'John',
  fullName: ['John', 'Marston'],
  userId: 1
}

Заменить ресурс:

fetch("http://ajax.test-danit.com/api/json/users/1", {
    method: 'PUT',
    body: JSON.stringify({
      userId: 1,
      name: 'John',
      fullName: ['John', 'Marston']
    }),
    headers: {
      'Content-Type': 'application/json'
    }
  })
  .then(response => response.json())
  .then(json => console.log(json))

// Пример ответа
{
  id: 1,
  name: 'John',
  fullName: ['John', 'Marston'],
  userId: 1
}

Заменить часть ресурса:

fetch("http://ajax.test-danit.com/api/json/users/1", {
    method: 'PATCH',
    body: JSON.stringify({
      userId: 1,
      name: 'John',
      fullName: ['John', 'Marston']
    }),
    headers: {
      'Content-Type': 'application/json'
    }
  })
  .then(response => response.json())
  .then(json => console.log(json))

// Пример ответа
{
  id: 1,
  title: "quidem molestiae enim",
  name: 'John',
  fullName: ['John', 'Marston'],
  userId: 1
}

Удалить ресурс:

fetch("http://ajax.test-danit.com/api/json/users/1", {
    method: 'DELETE',
  })
  .then(response => console.log(response)

// Пример ответа
{
  status: 200,
  ok: true
  /* ... */
}