11 - express, typescript, body, query, viewMode, InputModel, data mapping / Backend - Путь Самурая

10 444 просмотра • 19 августа 2022 г.

IT-KAMASUTRA

168 тыс. подписчиков

Станьте спонсором канала, и вы получите доступ к эксклюзивным бонусам. Подробнее:
https://www.youtube.com/channel/UCTW0FUhT0m-Bqg2trTbSs0g/join

Поддержать меня и получить доступ к дополнительному контенту можно вот здесь:
https://www.patreon.com/itkamasutra

Поддержать проект монеткой: https://social-network.samuraijs.com
Платное обучение в онлайн инкубаторе:
https://it-incubator.ru
https://it-kamasutra.com

Рустам Медведев

08.09.22 в 17:08

Крутой курс, работаю фронтэндером, захотел познать для себя миры бэкэнда. Мне очень нравится как ты, Дмитрий, круто подаешь материал. Клевые кейсы, клево разбираешь разные тонкости языка и инструментов, жду продолжения )

Александр Абрамов

07.09.22 в 20:06

Спасибо! Потрясающе объесняешь! Во многом благодаря твоему Пути Самурая уже год в разработке. Сейчас очень нуждаюсь в расширении кругозора - Бекэнд, NodeJs, Kubernates, MongoDB и пр. Ждём следующего выпуска

Andrey Kurtenkov

05.09.22 в 17:31

Отличный урок! Спасибо за твои труды:)

Maryna Serhiichuk

04.09.22 в 17:11

Работаю год на фронте. Иногда возникает надобность заглядывать на бек, да и интересно, собственно. Обучалась реакту с тобой. Все легко, интересно тем, что ты заходишь на какую-то тему с необыкновенной стороны, как семена на подумать и нужно решить что-то для себя

Как по мне, для совсем нулячих, это будет сложновато, особенно с тайпскриптом и тестами. Я уже со временем на работе привыкла к тайп, но по началу, на путь самурая второй, было непонятно.

Спасибо тебе за твой труд

Владислав Витковский

02.09.22 в 09:14

ролик не смотрел, на фронте работаю
но за название лайк однозначно))
и правда ведь , в обоих случаях причем ;)

Aidos Sergibaev

01.09.22 в 19:44

але народ, добивайте - 400 лайков осталось

SAKO

31.08.22 в 07:27

Все шикарно, изучил фронт конечно у тебя, и все темы легко даётся, благодаря тебе, спасибо продажай в том духе

Александр

30.08.22 в 22:29

Открывать в новой вкладке браузера можно колесиком)

Denis Zavarzin

30.08.22 в 09:52

В конце вместо утилитной функции нужно было один тип из другого создавать либо через конструктор, либо с помощью метода from<TypeName>. Но видимо до этого не дошли.

GK woodpecker

27.08.22 в 08:08

Спасибо Димыч, продолжай. Было бы круто чаще затрагивать более глубокие темы вроде того же паттерна MVC или применения JSDoc, так будем расти и в ширину и в глубину, можно просто упоминать и оставлять на самостоятельное изучение.

Dmtreaqq Pavlov

26.08.22 в 06:40

Как сделать так, чтобы видео не переставали выходить?)))

Dmtreaqq Pavlov

25.08.22 в 19:11

Очень круто! Продолжай в том же духе!!! Оформил спонсорство, пока что первого уровня))

Vladyslava Ostapchuk

25.08.22 в 11:34

Oleksii Markov

25.08.22 в 08:25

*ука до слез))) как разрабу вообще насрать)))

Bing Bong

24.08.22 в 17:33

molodec bro!

Vitalion83

24.08.22 в 13:34

Подскажите как учат новые технологии опытные разрабы. Сидят долго и нудно читают книги, документацию от корки до корки!? Просто я смотрю на Димыча, он из дотнета пришел и так сразу: вот вам реакт путь самурая, потом такой хлоп! вот вам тайпскрипт. Или Ulbi или Минин рассказывают про все технологии на свете.

Borys Katowsky

24.08.22 в 13:06

Димыч на высоте, как всегда. Он реально круто объясняет!

Владислав Марченко

23.08.22 в 22:14

Димыч привет! Ты задавал вопрос в видео, как типизировать Response чтобы он нам запретил в send передавать данные. На самом деле все просто, Response<never> :)

Ivan Ivanov

23.08.22 в 19:03

Продолжай бро! Суперски!

Slyusar Vladislav

23.08.22 в 13:39

Привіт! Я десь рік пишу на реакті, та ось десь два з половиною місяці трошки дивився на бекенд, написав не дуже складну апішку з авторизацією, аутентифікацією. Мені такий формат навпаки заходить, бо щоб трошки в'їхати у Nest, можна почитати документацію, подивитися туторіали, та щось вже спробувати, там є своя архітектура і зробити неправильно важче. А те, що зараз пишеш ти, можна зробити по-різному, і багато де, можна зробити дурню, тому такий контент це топ <3

PS. Я думаю, те що я вже подивився на Nest, теж вплинуло, так більше зрозуміло, навіщо ти пояснюєш те, що пояснюєш.

Прилепский Роман

22.08.22 в 19:26

Огонь. Очень классно.

NAGIBATOR PRO

22.08.22 в 18:31

Дима,почему так редко видео?

Humble

22.08.22 в 13:42

Со скольких (примерно) уроках мы можем искать работу (Джуниор бекенд)

Humble

22.08.22 в 13:40

Идём к MERN stack?

Марк Соболев

22.08.22 в 11:16

Привет, слежу за тобой уже не один год, ты очень крут) Благодаря курсу по фронтенду, смог устроиться) Спасибо тебе и успехов в начинаниях! А теперь вопрос. Почему когда ты используешь фильтрацию по кверипараметрам используешь в фильтрации indexOf вместо includes? Вкусовщина или есть какой то скрытый смысл, ведь в кейсе с инклудс меньше кода и как будто метод для этого и сделан.

И ещё как идея по типизации, сейчас есть три модели у которых есть title (я говорю про квери, криейт и апдейт), можно создать утилитарный тип WithTitle (as example) и экстендить модели от этого типа, таким образом дублирование уходит, если тайтл не нужен убирается экстенд. Тогда и дублирования вроде нет и синглреспонибилити не нарушается

Стёпа _

22.08.22 в 11:04

Классный курс, все классно рассказываешь! Ждём продолжение)

Дмитрий Иванов

22.08.22 в 09:16

Лайк

Vladyslav Parkhomeko

22.08.22 в 06:20

+
ускоряйся)

Cardinalilya

22.08.22 в 04:26

Коли, після Fastify, спробував Express, відразу стало не зручно типізувати Request. Тому, щоб зробити це так само зручно, як там написав зручну обгортку для цього.

export interface RequestGenericInterface {
Body?: unknown;
Query?: unknown;
Params?: unknown;
}

export type CustomRequest<RouteGeneric extends RequestGenericInterface = RequestGenericInterface> = Request<RouteGeneric['Params'], {}, RouteGeneric['Body'], RouteGeneric['Query']>;

Тепер, можна не писати усі ці типи накшталт, RequestTypeWithBodyAndPArams, а є один, який зрозумілий і дуже зручний.

Приклад використання:
export type CreateReqType = CustomRequest<{
Body: { title: string, description: string, createdAt: new Date() }
}>;

P.s. Дімич, дякую тобі! Твій курс "Шлях самурая", дуже допоміг мені у навчанні і ще не пройшовши його до кінця я влаштувався на першу роботу)

Don Patron

21.08.22 в 23:34

ну как и всем,лайк подписка,и т,д,а резултат где?!2-5-6-кому пива дали?

Who I Am

21.08.22 в 22:16

Ерунда ))) С# рулит

Mark Flerko

21.08.22 в 19:11

Я уже работаю мидлом бэкэндером (недавно стал мидлом хД), начинал фронтом и вошел в айти благодаря пути самурая 1! Инсайды получаю, про маппинг выходных данных очень интересно, в несте это правда намного легче делается, но сути не меняет - вопросы чисто архитектурные, никакого пересказывания документации тут нет, спасибо!

Aidos Sergibaev

21.08.22 в 14:22

согласно статистике каждый 23-просмотр приносит тебе лайк, нам нужен 23 000 просмотров

GREEMAN's fly

21.08.22 в 11:35

а чо с курсом путь самурая 2? год уже не было выпусков

Александр Сосо

21.08.22 в 11:15

Спасибо за урок! Очень структурировано.

Александр Нестеров

21.08.22 в 10:21

Супер, круто объяснил про мапинг, огромное спасибо!!
Работаю фронтом на реакте два года, немного скучно стало на фронте, хочу развиваться дальше!!!
Летим !!!

Андрей Архипов

21.08.22 в 07:58

Димыч, спасибо тебе за то, что пилишь контент! Я тебя уже не смотрю (в силу того, что уже улетел

Huge Giraffe

21.08.22 в 07:43

Интригующее превью

Дед Яр

21.08.22 в 06:24

Эх бэкэнд огромный, уже 11 урок, а еще только самое начало)

Дед Яр

21.08.22 в 05:08

Я бы прописал типы для всех запросов, RequestGetCourses, RequestGetCourse, RequestPostCourse, RequestDeleteCourse и так же респонс.

SnAtVB

20.08.22 в 22:05

Превьюха огонь)

Oleg Degterov

20.08.22 в 20:23

Работаю фронтом, усиливаю бэк с Дмитрием)

SnAtVB

20.08.22 в 20:16

я вообще в диком шоке что у тебя так мало активности, а у какого-то сраного хауди, который льет бесполезную чуть куча подписоты и иногда видео много набирают, пичаль конечно, но не сдавайся, ты крут, должно все получится!

SnAtVB

20.08.22 в 20:16

я вообще в диком шоке что у тебя так мало активности, а у какого-то странного хауди, который льет бесполезную чуть куча подписоты и иногда видео много набирают, пичаль конечно, но не сдавайся, ты крут, должно все получится!

Max Georgievsky

20.08.22 в 19:39

Ставлю лайк заранее. Пока что нет возможности уделить время твоему видосу, т.к. устроился фронтом (во многом благодаря пути самурая) и решаю рабочие задачи. Но видосы по бэку твои смотрю и повторяю код, чтобы расширить свой кругозор. Позже обязательно посмотрю и этот видос. А сейчас просто благодарю тебя от всей души - ты влюбил меня в JS и изменил мою жизнь к лучшему. Слава Димону, нашему сенсею!

Андрей Балин

20.08.22 в 18:22

Всем привет!!! Дима ты много раз говорил об "асинхронщине" и грозился выпустить суперское видео, аналога которому нет на просторах интернета. Я думаю back-end как раз то самое место где эту тему стоит осветить. Полагаю, что многие из твоих подписчиков, которые сейчас смотрят этот курс и с нетерпением ждут новых видео поддержат меня. И наконец о моем собственном пути в мире асинхронных функций. Пересмотрел кучу видео, решил несколько примеров, но есть внутреннее ощущение, что чего-то упустил. Не хватает общего стержня на котором бы эти знания закрепились. Спасибо за твой труд. Он реально полезен.

The End

20.08.22 в 18:06

Димыч привет! Мне кажется лучше сразу показывать на Nest-е.
Ты начал с основ, я понимаю, но для просмотров мне кажется людям нужно то, что они могут сразу повторять и экспериментировать (путь самурая по Реакту в этом смысле ПушкаБомба!=) и учитывая, что по Несту не так много видео-материалов с качественным объяснением - аудитория будет расти быстрее, мне кажется ).

Жду не дождусь когда будет сам Nest, создание таблиц, связи, валидация, декораторы, гварды, модули-сервисы-контроллеры---ДиАй)) и тд.
(хотелось бы конечно вместо RESTa - GraphQL... но ты смотри сам, мб голосовалку запустить ближе к делу чтоб посмотреть кому что больше интересно..)))
И кстати если с GraphQL будет, то по сути Свагер и тп будет не нужно т.к. будет ApolloStudio - а это и Свагер и тесты и просто удобная штука!)
(У Egor Malkevich вышел классный видос почему GraphQL - это то хорошо=))


Предыдущий видос по тестам класс - давно не могу себя заставить начать изучать тестирование..., но твое объяснение резко повысило мотивацию!
Спасибо! Мир!

Ask Sonya

20.08.22 в 17:31

Супер!

Семён Свалов

20.08.22 в 16:31

обложка зачётная

The Frontend

20.08.22 в 14:57

Прекрасный человек. Опытный специалист. 100% лайк и поклон за вашь труд

Константин Павловский

20.08.22 в 14:16

Почему ни один из русскоговорящих айти-блогеров, которые за развитие айти, не собирает донаты на переводы книг, которых много на английском но мало на русском, например, о WebGL (ну или на которые есть спрос?)
Мб потому что нужны разрешения с автором? Или книги очень долго переводятся? Или нет таких специалистов которые бы хорошо знали и английский и ту тему которую переводят?

Igor

20.08.22 в 14:05

Сколько всего уроков планируется? Чтоб засесть с самого начала и до конца

Константин Павловский

20.08.22 в 13:46

Всё круто!

KostyaFromPiter

20.08.22 в 12:54

Нравится, что Дмитрий так подаёт материал, что все в комментариях пишут серьезные технические вещи, спрашивают конкретные вопросы. Даже новички понимают, о чем они говорят. Я думаю я сказал важную вещь. Каждый раз писал и буду писать вам - спасибо, вы реально заряженный программист, и дай бог здоровья довести курс до конца.

Vlad Maksimov

20.08.22 в 10:42

По сингл респонсибилити я бы подробнее остановился, хорошие примеры были в уроке. Классы, функции и проч должны выполнять только одну задачу. И проще всего это определить по неймингу (он должен быть конкретный а не абстрактный, чтоб не было сомнений). CreateUpdateModel очевидно служит больше, чем для одной цели и повторяющийся код здесь существует для разных задач, не нужно стремиться от него избавиться (в будущем он может меняться каждый в свою сторону и его все равно придется разделить или испортить условными операторами типа if / else). Соблюдать сингл респонсибилити (как и все SOLID и проч принципы) следует, чтобы части кода как можно меньше зависели друг от друга, чтобы код было легче дебажить, читать и понимать, покрывать тестами, расширять новым функционалом или менять и тп. В конце концов код писать будет проще и быстрее, в нем будет меньше багов и разработка выйдет дешевле по деньгам.

Алексей Yankov

20.08.22 в 10:40

шикарный видос, изучаю фронт, спасибо!
Летим!

Muslim Muslimov

20.08.22 в 10:31

Топ джи!

Vlad Maksimov

20.08.22 в 10:08

В тайпскрипте есть *.d.ts файлы для хранения типов и их доступности в коде без лишних импортов / экспортов

IT-KAMASUTRA

20.08.22 в 10:07

https://it-incubator.ru/education - обучение в АйтиИнкубаторе с гарантированным трудоустройством
https://offerheap.com - накачивай свою репутацию и получай приглашения в лучшие компании

LIMPIX

20.08.22 в 09:00

Типизируем всей деревней. Спасибо за видео. ✨

Пара Слов

20.08.22 в 08:36

Вот это превьюшка

Калиниченко Евгений

20.08.22 в 01:50

Ну Димыч и шалун

Рекомендации:

IT-KAMASUTRA

25 240 просмотров •

12 марта 2022 г.

IT-KAMASUTRA

44 958 просмотров •

27 января 2022 г.

IT-KAMASUTRA

12 184 просмотра •

29 января 2022 г.

IT-KAMASUTRA

9 922 просмотра •

18 июля 2020 г.

IT-KAMASUTRA

16 414 просмотров •

20 октября 2020 г.

showinfo=0 controls=1 rel=0 iv_load_policy=3