Last active
February 8, 2018 22:54
-
-
Save larry27/5d07c0f53b6cfe177a3a5a50e38fcaaf to your computer and use it in GitHub Desktop.
ComicsSite
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Нашел новый сайт с апи, можно попробовать замутить еще его. Конечно не скажу, что прям сильно новый функционал, но для закрепления и | |
отработки навыков подойдет. | |
APIKEY:d59d3e67045d416f4694de0c0b5914b271721ffa | |
Пример запроса в формате json | |
https://comicvine.gamespot.com/api/issues/?api_key=d59d3e67045d416f4694de0c0b5914b271721ffa&format=json | |
Документацию по api можно читать тут https://comicvine.gamespot.com/api/ | |
Делаем сайтик похожий на https://comicvine.gamespot.com | |
******************************************************** | |
1. Делаем вывод списка комиксов и его номеров | |
Каждый комикс содержит номера пример , как выглядит комикс ( страница комикса) | |
https://comicvine.gamespot.com/single-series/4050-766/ | |
В нем 28 выпусков, сначала предлагаю сделать просто список комиксов их вывод это делается по запросу | |
https://comicvine.gamespot.com/api/volumes/?api_key=d59d3e67045d416f4694de0c0b5914b271721ffa&format=json | |
Там есть поля "number_of_page_results": 100, "number_of_total_results": 92412, на основе этого делаешь пагинацию. Там смотри ответ смотри обложку и тд и тп . | |
Читаешь раздел апи volumes там есть сортировки и тд, ну сначала разберись что тебе отвечает апи. | |
ЧТобы все работало как и раньше надо будет тебе немного поменять сервер на ноде, что ятебе прислал, там урл поменять там разберешься | |
******************************************************** | |
06.02.2018 | |
Посмотрел твой код, понял твою ошибку. | |
1. Тебе надо работать с тем апи который делает запрос на issues там в гист, там где описание я делал пример. Если посмотреть описание апи для работы с issues там есть парамертр volume это id твоих комиксов | |
Получается тебе надо сделать запрос к issues и передать фильтр по volume. Посмотри описание апи. | |
2. Тебе надо именно сделать переход. Если ты просто откроешь в номов окне, то ты не сможешь нормально манипулирвать js внутри этого документа, короче это ебала будет, надо сдалать что-то вроде | |
<a href="comics.html">Подробнее</a> | |
И помнишь ты смотрел видео по протоколу HTTP там было описание GET и POST параметров. Тебе нужна как-то передать на страницу comics.html идентификатор твоего volume т.е. чтобы ты мог с этой странице сделать запрос и получить весь списко выпусков данного комикса отсюда делает вывод, что ссылка принимает вид | |
<a href="comics.html?volume_id=123">Подробнее</a> | |
Можень назвать как тебе удобно это просто параметр. | |
3. Тебе надо будет как-то со странице получить этот параметр с помощью js. Получается в браузере есть такой обьект location https://developer.mozilla.org/ru/docs/Web/API/Window/location | |
Можно воспользоваться для начала деревянным спомобом | |
console.log(window.location.search); | |
Посмотри что вернет при переходе по ссылке comics.html?volume_id=123 | |
Там уже сможешь с помощью строковых функций получить число, ну и там уже сделаешь запрос к апи. | |
************************ 09.02.2018 ****************************** | |
По поводу твоего кода файл script_for_about.js | |
1. Первая строка - Нужно навверное уже задуматься, надо созданием отдельной функции или класса, который будет собирать твою ссылку и делать запрос.Если вдруг изменится апи кей, во скольких местах тебе придется его изменить? А надо, чтобы это было одно место. | |
Предлагаю сделать класс вида | |
class API { | |
constructor(apiKey){ | |
this.apiKey = apiKey; | |
} | |
getComics(){ | |
....... | |
} | |
getComicsNumbers() { | |
.... | |
} | |
} | |
Ну или еше каким-то образом это все вынести в одно место, чтобы юзать в 2х файлах | |
2. Параметр гет, если не задан, то все поломается, так не должно быть предлагаю написать функцию аля getComicsId или как-то так и она вернет тебе айди комикса из гет запроса | |
window.location.search.substring(11) надо по крайней мере вроверить, что есть такой парамертр в гет запросе , а если будет их несколько типа ?page=1&test=2&gff=34 то твой запрос сломается, сам понимаешь почему. | |
Предалгаю не писать длинные строки с урлом, а создать типа обьект с параметрами аля | |
let requestData = { | |
api_key:key, | |
&format:json, | |
filter: "volume:2" | |
} | |
ПОтом этот обьект куда-то в функцию передавать и собирать из него правильный урл, по обеектам ты уже умеешь итерироваться типа for in или for of и тд | |
3. Старайся уходить от fetch(request) | |
.then(function (response) { | |
return response.json(); | |
}) | |
Можно использовать арроу функции, так тебе потом будет легче | |
4. pageChanger.onclick тут опять дублирование апи кея, помысли, например если бы у нас была функция вида getComics(pageNumber, limitElementOnPage) как-то так. | |
В дальнейшем еще надо подумать по поводу создания штмл с помощью шаблонов, типа http://ejs.co/ потом почитаешь . Просто чтобы ты сам не делал итерацию не вставлял кучу кода, а просо передал собранный обьект куда надо. | |
Может уже сейча прикрутить бабел чтобы использовать import и тогда можно будет разделить код по нормальному. | |
В целом все ок, надо просто по красивее чутка это все причесать дело | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment