-
Notifications
You must be signed in to change notification settings - Fork 16
JSON server
npm install -g json-serverСоздадим папку ( например, test ) и поместим в нее файл db.json:
{
"users": [
{
"id": 1,
"name": "Владимир",
"lastName": "Кононенко",
"email": "vladimir.kononenko@gmail.com",
"photoURL": "https://cdn.pixabay.com/photo/2016/03/31/19/58/avatar-1295429_960_720.png"
},
{
"id": 2,
"name": "Никита",
"lastName": "Терещенко",
"email": "nikita.tereshenko@gmail.com",
"photoURL": "https://i.pinimg.com/originals/3d/47/4f/3d474f82ff71595e8081f9a120892ae8.gif"
},
{
"id": 3,
"name": "Tim",
"lastName": "Wagner",
"email": "timVagner@gmail.com",
"photoURL": "https://vignette.wikia.nocookie.net/yogscast/images/8/8a/Avatar_Turps_2015.jpg"
},
{
"id": 4,
"name": "James",
"lastName": "Bond",
"email": "jamesBond@gmail.com",
"photoURL": "https://vignette2.wikia.nocookie.net/yogscast/images/5/59/Avatar_Lewis_2015.png"
}
],
"posts": [
{
"userId": 2,
"title": "My first post here",
"body": "It's really wonder!",
"id": 1
},
{
"userId": 2,
"id": 2,
"title": "Автопробег",
"body": "Завтра планируется автопробег. Участвовать могут все желающие"
},
{
"userId": 1,
"title": "*Бетономешалка",
"body": "Это жесть. Собираюсь купить. Лучше, чем АК!",
"id": 3
},
{
"id": 4,
"userId": 3,
"title": "JS",
"body": "Look here - there are some samples"
},
{
"userId": 3,
"title": "XMLHttpRequest",
"body": "Method POST",
"id": 5
}
],
"comments": [
{
"postId": 1,
"id": 1,
"userId": 1,
"body": "wow!"
},
{
"postId": 3,
"id": 2,
"userId": 2,
"body": "Hi, I'm wonder!"
},
{
"postId": 4,
"id": 3,
"userId": 3,
"body": "It's really wonder!"
},
{
"postId": 2,
"id": 4,
"userId": 2,
"body": "Ударим автопробегом по бездорожью и разгильдяйству!"
}
]
}Перейдем в Bush и запустим JSON Server с базой данных db.json
$ json-server --watch <путь к файлу>/db.jsonМожно использовать сокращение:
$ json-server <путь к файлу>/db.json -wПоскольку мы установили json-server глобально,
корневой папкой сайта будет папка
для установки глобальных пакетов по умолчанию ( ~ )
Указывая <путь к файлу>, нужно задавать его относительно этой папки
В данном случае файлusers.json
находится в папкеz:/home/test
поэтому нужно указать полный путь к файлу:
json-server z:/home/test/users.json –wСервер сгенерировал нам endpoints:
http://localhost:3000/users
http://localhost:3000/posts
http://localhost:3000/comments
( ссылки на ресурсы users, posts, comments, описанные нами в базе данных users.json )
Теперь, пока сервер запущен ( т.е. пока вы не воспользуетесь Ctrl + C в консоли Bush ), можно записывать и вытягивать данные из базы данных, пользуясь указанными endpoints
( при этом в консоли Bush логируются все запросы )
Теперь проверим, как работают наши запросы, из консоли браузера
fetch ( 'http://localhost:3000/comments' )
.then ( response => response.json ()
.then ( json => console.log ( json ) )
)Теперь получим данные из базы данных в переменные users, posts и comments, используя функцию getData
Наберем следущий код в консоли браузера:
let users, posts, comments
function getData ( ref ) {
return fetch ( 'http://localhost:3000/' + ref )
.then ( response => response.json () )
}
Promise.all ([
getData ( "users" ),
getData ( "posts" ),
getData ( "comments" )
])
.then (
response => {
[ users, posts, comments ] = response
console.log ( users, posts, comments )
}
)Добавим новый комментарий:
fetch ( 'http://localhost:3000/comments', {
method: 'POST',
body: JSON.stringify ({
"postId": 1,
"userID": 1,
"body": "Good for you!"
}),
headers: {
"Content-type": "application/json"
}
})
.then ( response => {
console.log ( 'response: ', response )
})Обратите внимание, что поле id добавляемой записи вычисляется на стороне сервера
Вам не нужно устанавливать его значение
( но вы можете это делать, если будете отслеживать существующие значения, потому что в противном случае при попытке записи дублирующихся значений id будет сгенерировано исключение )
Вытащим добавленный коммент в консоли:
fetch ( 'http://localhost:3000/comments?postId=1&id=4' )
.then ( response => response.json () )
.then ( json => console.log ( json ) )Изменим содержание первого поста :
fetch ( 'http://localhost:3000/posts/1', {
method: 'PUT',
body: JSON.stringify ({
userID: 2,
title: "My first post here",
body: "It's really wonder!"
}),
headers: {
"Content-type": "application/json"
}
})
.then ( response => {
console.log ( 'response: ', response )
})Удалим первый комментарий
В консоли браузера наберем код:
fetch ( 'http://localhost:3000/comments/1', {
method: 'DELETE',
headers: {
"Content-type": "application/json"
}
})
.then ( response => {
console.log ( 'response: ', response )
})function workWithData ( method, url, data ) {
let request = new XMLHttpRequest ()
request.onreadystatechange = function ( event ) {
if ( this.readyState === 4 )
if ( this.status === 200 || this.status === 201 )
console.log ( this.responseText )
request.open ( method, url )
request.setRequestHeader (
'Content-type', 'application/json; charset=utf-8'
)
request.send ( data )
}workWithData (
'GET',
'http://localhost:3000/posts'
)workWithData (
'POST',
'http://localhost:3000/posts',
JSON.stringify ( {
userId: 2,
title: 'XMLHttpRequest',
body: 'Method POST'
} )
)workWithData (
'DELETE',
'http://localhost:3000/posts/7'
)workWithData (
'PUT',
'http://localhost:3000/posts/3',
JSON.stringify ( {
userId: 2,
title: "*Бетономешалка",
body: "Это жесть. Собираюсь купить. Лучше, чем АК!"
} )
)
© Irina H.Fylyppova 2018
Использование данных материалов или любой их части коммерческими школами ( курсами ) является нарушением авторских прав
| 1 | 2 | 3 | 4 | 5 |
| 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 |
| ⏬ |
|---|
- Блок-схема алгоритма
- Developer Tools
- Chrome DevTools
- Переменные
- Оператор typeof
- Структуры данных
- Операторы присваивания
- Логические выражения
- Условные операторы
- Инкремент
- Свойство length
- Оператор цикла for
- UTF-8
Homework
- Приведение типов
- NaN | null | Infinity
- BigInt (ES10)
- Функции
- Методы
- Методы строк
- Методы массивов
- Date ()
Самостоятельная работа
Практика (XSS)
Homework
- Циклы while и do...while
- Циклы for...of и for...in
- Параметры по умолчанию
- Объект function
Практика
Homework
- Нативные и host-объекты
- Литерал объекта
- Унаследованные свойства
- Конструктор
- Модель наследования
- Публичные и приватные свойства
- Оператор in
1
Homework
- Итерирующие методы массивов
- Тестирование производительности
- SHA
Homework
- Размеры и прокрутка элемента
- Event Loop
- async | await
- API
- REST | HATEOAS
- status codes
JSON placeholder-
JSON server
fake chat
Homework
- strict mode
- Вычисляемые имена свойств
- Краткий синтаксис методов
- Краткий литерал объекта
- Классы
Homework
- :not(:defined)
- Shadow DOM
- Custom elements
- Lifecycle hooks
- whenDefined
- <template>
- slot
1
2
3
Homework
- npm
- webpack
Упражнение 1- ES6 модули
Упражнение 2- --mode | --watch
Упражнение 3
Упражнение 4
Упражнение 5
Упражнение 6
Упражнение 7
Упражнение 8
Homework
| ⏫ |
|---|

Дополнительно
Справочная инфо
Git Bush
TCP/IP
Коды символов