Данный раздел содержит документацию 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
/* ... */
}