Size: a a a

2020 August 30

DS

David Shiko in PiterPy Meetup
Eugene Denisov
POST /likes
Можно чуточку подробнее?
источник

ED

Eugene Denisov in PiterPy Meetup
David Shiko
Можно чуточку подробнее?
Создаём новый объект. Значит POST. А дальше два варианта:
1. Если совсем строго подходить, то при создании объекта в path указываем только его тип, остальное в тело.
2. Менее строгий вариант: /content/:id/likes/, то есть задать привязку к контенту как к родительскому объекту.

Вопрос like/likes тоже не совсем однозначный.
источник

DS

David Shiko in PiterPy Meetup
Eugene Denisov
Создаём новый объект. Значит POST. А дальше два варианта:
1. Если совсем строго подходить, то при создании объекта в path указываем только его тип, остальное в тело.
2. Менее строгий вариант: /content/:id/likes/, то есть задать привязку к контенту как к родительскому объекту.

Вопрос like/likes тоже не совсем однозначный.
Первый вариант не понял.
Я зачем двоеточие? Я прочитал, что это обычный символ
Про POST, сам лайк конечно новый объект, но количество лайков будет меняться потоянно, т.е. счетчик обновляться и т.п., все равно POST а не PUT? Удалять через DELETE?
источник

VB

Vasilii Bliznetcov in PiterPy Meetup
лайк - отдельная сущность. Поэтому каждый новый лайк == новая запись. Поэтому и POST.
двоеточтие указывает, что тут параметр-переменая, в итогой урле будет выглядеть как-то так:
POST /content/12/likses/
что-то типа добавления лайка записи с ID=12
источник

DS

David Shiko in PiterPy Meetup
@el71Gato @Hound672 Спасибо!
источник

ED

Eugene Denisov in PiterPy Meetup
David Shiko
Первый вариант не понял.
Я зачем двоеточие? Я прочитал, что это обычный символ
Про POST, сам лайк конечно новый объект, но количество лайков будет меняться потоянно, т.е. счетчик обновляться и т.п., все равно POST а не PUT? Удалять через DELETE?
Про удалять -- правильный вопрос. Будет ли возможность получать список лайков? Как будет удобнее удалять? DELETE -- это да, но по какому пути? id самого лайка отправлять, типа DELETE /likes/123/ так себе затея. Так что вложенный путь смотрится лучше. Но опять же, передавать ли нам что-то после /likes/?
источник

ED

Eugene Denisov in PiterPy Meetup
Двоеточие -- просто служебный символ, который показывает, что это не литерал, а переменная. Как $ в шелл скриптах.
источник

DS

David Shiko in PiterPy Meetup
Eugene Denisov
Двоеточие -- просто служебный символ, который показывает, что это не литерал, а переменная. Как $ в шелл скриптах.
Аа, я понял, в fast api это делается через {id} ))
источник

DS

David Shiko in PiterPy Meetup
Eugene Denisov
Про удалять -- правильный вопрос. Будет ли возможность получать список лайков? Как будет удобнее удалять? DELETE -- это да, но по какому пути? id самого лайка отправлять, типа DELETE /likes/123/ так себе затея. Так что вложенный путь смотрится лучше. Но опять же, передавать ли нам что-то после /likes/?
Да, возможность получать список лайков будет
Что вы имеете ввиду под вложенным путем?
источник

ED

Eugene Denisov in PiterPy Meetup
Который второй вариант.
источник

DS

David Shiko in PiterPy Meetup
Eugene Denisov
Который второй вариант.
Логично, т.е. надо серьезно думать над задачей выходит. Я думал это шаблонная задача.
Кстатит во всех популярных сетях это реализовано через js))
источник

DS

David Shiko in PiterPy Meetup
Кстати я делаю API, а не сайт, поэтому все сущности виртуальны, т.е. результат отражается только на БД
источник

DS

David Shiko in PiterPy Meetup
Eugene Denisov
Про удалять -- правильный вопрос. Будет ли возможность получать список лайков? Как будет удобнее удалять? DELETE -- это да, но по какому пути? id самого лайка отправлять, типа DELETE /likes/123/ так себе затея. Так что вложенный путь смотрится лучше. Но опять же, передавать ли нам что-то после /likes/?
Я бы так удалял: DELETE https://host/content/id/unlike
Выглядит не очень красиво, но надежно.
Не понимаю зачем id лайка, можно удалять по токену (токен=юзер, 1 юзер = 1 лайк)
источник

ED

Eugene Denisov in PiterPy Meetup
David Shiko
Я бы так удалял: DELETE https://host/content/id/unlike
Выглядит не очень красиво, но надежно.
Не понимаю зачем id лайка, можно удалять по токену (токен=юзер, 1 юзер = 1 лайк)
DELETE /content/{id}/unlike так себе идея. С точки зрения REST у нас есть объект, который мы можем удалить или модифицировать, обратившись к нему по одному и тому же пути. Мы не удаляем анлайк, мы удаляем лайк.
источник

DS

David Shiko in PiterPy Meetup
Eugene Denisov
DELETE /content/{id}/unlike так себе идея. С точки зрения REST у нас есть объект, который мы можем удалить или модифицировать, обратившись к нему по одному и тому же пути. Мы не удаляем анлайк, мы удаляем лайк.
Однако мелкомягкие так сделали в своей апишке, других примеров я не нашел пока
https://docs.microsoft.com/en-us/sharepoint/dev/general-development/social-feed-rest-api-reference-for-sharepoint#postunlike
источник

ED

Eugene Denisov in PiterPy Meetup
David Shiko
Однако мелкомягкие так сделали в своей апишке, других примеров я не нашел пока
https://docs.microsoft.com/en-us/sharepoint/dev/general-development/social-feed-rest-api-reference-for-sharepoint#postunlike
unlike -- это уже глагол (like может быть как глаголом, так и существительным). Глагол -- это вызов функции. Вызов функции -- это RPC, то бишь не REST.
источник

DS

David Shiko in PiterPy Meetup
Eugene Denisov
unlike -- это уже глагол (like может быть как глаголом, так и существительным). Глагол -- это вызов функции. Вызов функции -- это RPC, то бишь не REST.
а dislike?))
источник

ED

Eugene Denisov in PiterPy Meetup
Как like.
источник

p

pragus in PiterPy Meetup
David Shiko
Я бы так удалял: DELETE https://host/content/id/unlike
Выглядит не очень красиво, но надежно.
Не понимаю зачем id лайка, можно удалять по токену (токен=юзер, 1 юзер = 1 лайк)
А давайте представим сценарий, когда пользователь  хочет убрать все свои лайки.

Т.е. вот у нас мобильное приложение и там есть "выделить всё" и потом ткнуть unlike
источник

DS

David Shiko in PiterPy Meetup
pragus
А давайте представим сценарий, когда пользователь  хочет убрать все свои лайки.

Т.е. вот у нас мобильное приложение и там есть "выделить всё" и потом ткнуть unlike
Я в таблице лайков удалю все записи с этим юзером по некоторому DELETE запросу
Например
DELETE https://host/user/:id/content/likes/
Не исключаю ошибку в савоих суждениях
источник