powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Rest. А как реализуются методы с логикой сложнее чем Добавить/Удалить ?
56 сообщений из 56, показаны все 3 страниц
Rest. А как реализуются методы с логикой сложнее чем Добавить/Удалить ?
    #39648967
SomeQuestions
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Интересует такой вопрос.
В Aspnet Mvc принято иметь контроллеры. Причем каждый контроллер посвящен отдельному аспекту - работа с пользователями, работа с документами т.д. И принято называть методы с читабельными-осмысленными названиями.

Теперь Rest. Мы имеем контроллер для работы с сущностями и базовые операции Get для чтения, Post для вставки, Put для изменения.

Но как в Rest укладываются задачи сложнее чем базовые команды Добавить/Удалить ? Что если требуется реализовать логику, к примеру, "найти все документы где создателем являлись пользователи из переданного списка и скопировать их на FTP". Как такую задачу впихнуть в подход Rest ?
...
Рейтинг: 0 / 0
Rest. А как реализуются методы с логикой сложнее чем Добавить/Удалить ?
    #39649007
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SomeQuestions,

Вот под спойлером пример кода node

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
 let xmlpromise = exporter.getxml(sqlcontents, "CONTENTS");
        let xmlpromisetitle = exporter.getxml(sqlmol, "TITLE");
        let printxml="<DOCUMENT>";
        let ID=-1;


        async.series(
            [
                callback =>{
                    xmlpromise.then((xmlresult) => {
                        printxml=printxml+xmlresult;
                        console.log("get contents");
                        callback();
                    }, (err) => {
                        reject(err);
                    });
                },
                callback=>{
                    xmlpromisetitle.then((xmlresult) => {
                        printxml=printxml+xmlresult;
                        console.log("get title");
                        callback();
                    }, (err) => {
                        reject(err);
                    });
                },
                callback=>{
                    console.log("generatetask soap");
                    printxml=printxml+"</DOCUMENT>";
                    const soap=require('./soapconnect');
                    let prn=soap.sendxml_soap(printxml);
                    prn.then((result) => {
                        console.log("save sopap xml "+result);
                        ID=parseInt(result);
                        request.scn=ID;
                        if(ID===-1) {throw "glassfish stuppid";}
                        callback();
                    }, (err) => {
                        reject(err);
                    });


                },
                callback=>{
                    console.log("done soap");
                    dbmod.closetitle(request);
                    resolve();
                }


            ],err => {
                if (err)
                { reject(err);
                    throw err
                    console.log('Both a and b are saved now');}

            }
        );


    });



Который по rest post типа "closedoc"
1.Печатает чек.(Возможно фискальный)(Предварительно подготовив контекст и титла )
2.Отправляет по soap в центральную базу конторы.
3.Закрывает всё это
4.И если всё это успешно...отвечает "всё пучком"
...
Рейтинг: 0 / 0
Rest. А как реализуются методы с логикой сложнее чем Добавить/Удалить ?
    #39649022
SomeQuestions
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
irbis_al,

мой вопрос наверное про другое. как в модель rest укладываются методы со сложной логикой ?
Если я правильно понимаю, то Rest это лишь про то, что есть некий url "/docs/"
и применение к нему HttpGet, HttpPost и пр позволяет оперировать данными. Но как в этй модель укладываются сложные методы? Каким образом в моделе Rest можно создать метод "вот список юзеров, выбранных на фронте, собери их документы и закинь на FTP". Это ведь не укладывается в правило "у нас есть ли HttpPost, Put, Get и только ими мы можем организовывать логику" ?
...
Рейтинг: 0 / 0
Rest. А как реализуются методы с логикой сложнее чем Добавить/Удалить ?
    #39649060
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SomeQuestionsirbis_al,
...как в модель rest укладываются методы со сложной логикой ?...

когда совсем нет мыслей, или видишь перепутье при выборе, лучше использовать опыт ранее накопленный.
Берёте любой на ваш взгляд флагман в любой отрасли и смотрите его публикуемое апи.
Чиссо с потолка, можете глянуть на вкус..

redmine
jira
confluence
rancher
Jenkins
и т.д..

я надеюсь разнообразность выполняемых задач указанными товарищами у Вас не вызывает сомнений? :)

удачи вам
(круглый)
ЗЫ
Можно передавать в запросе (по ресту) практически любые параметры, в том числе и перечисления.
А вот функционал обычно следует из объектной модели построения вашей логики. Если для объекта "нормально" собрать инфу по указанному перечислению и сгенерить вывод их куда-либо. То почему это должно вызывать у Вас беспокойство?
ЗЫ ЗЫ
Если дальнейший обмен между броузером и сервером требует поточных подходов - то возможно применение вэб-сокетов так-же. Например консоль, просмотр логов и т.п..
...
Рейтинг: 0 / 0
Rest. А как реализуются методы с логикой сложнее чем Добавить/Удалить ?
    #39649212
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SomeQuestionsirbis_al,

мой вопрос наверное про другое. как в модель rest укладываются методы со сложной логикой ?
Если я правильно понимаю, то Rest это лишь про то, что есть некий url "/docs/"
и применение к нему HttpGet, HttpPost и пр позволяет оперировать данными. Но как в этй модель укладываются сложные методы? Каким образом в моделе Rest можно создать метод "вот список юзеров, выбранных на фронте, собери их документы и закинь на FTP". Это ведь не укладывается в правило "у нас есть ли HttpPost, Put, Get и только ими мы можем организовывать логику" ?

Правильно.
REST-API это не про "логику", это про "объекты".
Типа создай/измени/покажи/удали объект.

Если нужна логика.
То это API, но не REST-API.
А там как хочешь так и делаешь.
...
Рейтинг: 0 / 0
Rest. А как реализуются методы с логикой сложнее чем Добавить/Удалить ?
    #39649216
alex55555
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SomeQuestionsНо как в Rest укладываются задачи сложнее чем базовые команды Добавить/Удалить ?
Сначала нужно понять, что такое rest и зачем он вам нужен. Но эта часть, как обычно, успешно пропущена, и клиент быстренько побежал ваять реализацию. Но реализацию чего? Он не знает, поэтому (и это так естественно) у него возникают вопросы. Хотя понять человека можно - развели, понимаешь, миллион новомодных терминов с крайне размытыми определениями и с весьма убогими примерами применения.

Подсказка - rest это о состоянии чего-то. А всё остальное - рассуждалки юношей о девочках. Как состояние связано с командами? Сначала наверное имеет смысл понять, а что за команды у вас там есть. Ну и по каждой - а как у неё дела с состоянием обстоят. То есть тупо сидим и думаем над каждой командой. А лучше всего вообще забить на все эти маркетинговые этикетки и просто думать о сути происходящего, не вписывая суть в границы новомодных, но при этом нередко просто идиотских концептов. То есть если вы молоды и талантливы - всего-то лет через 10 вам явится просветление :) Ну а пока - тупо перебираем команды и много думаем.
...
Рейтинг: 0 / 0
Rest. А как реализуются методы с логикой сложнее чем Добавить/Удалить ?
    #39649242
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SomeQuestionsirbis_al,

мой вопрос наверное про другое. как в модель rest укладываются методы со сложной логикой ?
Если я правильно понимаю, то Rest это лишь про то, что есть некий url "/docs/"
и применение к нему HttpGet, HttpPost и пр позволяет оперировать данными. Но как в этй модель укладываются сложные методы? Каким образом в моделе Rest можно создать метод "вот список юзеров, выбранных на фронте, собери их документы и закинь на FTP". Это ведь не укладывается в правило "у нас есть ли HttpPost, Put, Get и только ими мы можем организовывать логику" ?
Один микросервис выдаёт список пользователей, другому ставится задача в очередь на "собери их документы и закинь на FTP"
...
Рейтинг: 0 / 0
Rest. А как реализуются методы с логикой сложнее чем Добавить/Удалить ?
    #39649656
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAОдин микросервис выдаёт список пользователей, другому ставится задача в очередь на "собери их документы и закинь на FTP"

Не совсем.
1) 1-микросервису ставиться задача получить список пользователей
2) 2-микросервису ставиться задача получить документы пользователя/пользователей
3) 3-микросервису ставиться задача закинуть документы на FTP

А всем этим рулить 0-микросервис которому пришел запрос POST на создание файлов на FTP :-)
...
Рейтинг: 0 / 0
Rest. А как реализуются методы с логикой сложнее чем Добавить/Удалить ?
    #39649707
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul,

маразм крепчает
...
Рейтинг: 0 / 0
Rest. А как реализуются методы с логикой сложнее чем Добавить/Удалить ?
    #39649758
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRos,

если ты увидишь, что кто-то выбирает файлы в одном приложении (Windows Explorer), а закачивает на FTP в другом (FileZilla), то ты ему скажешь: "Это маразм, пользуйся исключительно FAR!".
Так что-ли?

Ну не хотят люди пользоваться монолитом, хотят разными программами, каждая их которых хорошо заточена под определённую задачу.
...
Рейтинг: 0 / 0
Rest. А как реализуются методы с логикой сложнее чем Добавить/Удалить ?
    #39649773
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

нет люди хотя фар и до сих пор упорно им пользуются
а вы их заставляете фигней заниматься

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

IDE Files и при том бесплатно!

а вы его заставляете изучить (КУПИТЬ, АРЕНДОВАТЬ) миллион прог размером и функционалом с гулькин нос
...
Рейтинг: 0 / 0
Rest. А как реализуются методы с логикой сложнее чем Добавить/Удалить ?
    #39649868
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosskyANA,

нет люди хотя фар и до сих пор упорно им пользуются
а вы их заставляете фигней заниматься

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

IDE Files и при том бесплатно!

а вы его заставляете изучить (КУПИТЬ, АРЕНДОВАТЬ) миллион прог размером и функционалом с гулькин нос

Вопрос холиварный.
Как Windows-way и Unix-way :-)
...
Рейтинг: 0 / 0
Rest. А как реализуются методы с логикой сложнее чем Добавить/Удалить ?
    #39649886
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRos,

что-то тебя в последнее время бомбит и в крайности кидает
...
Рейтинг: 0 / 0
Rest. А как реализуются методы с логикой сложнее чем Добавить/Удалить ?
    #39649888
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosпрога должна называться - работа с файлами и должна уметь - сжать, разрезать, сравнить, мержить. закинуть в фтп, хтп, забрать из ппп, ссс, удалить, запретить чтение и изменения, давать права, отменить права, перетранслировать на другой язык, компилировать, оптимизировать,….
Ой всё, пойду удалю к чёрту 7Zip, WinMerge, FileZilla, FastStone Capture и т.д., оставлю только FAR
...
Рейтинг: 0 / 0
Rest. А как реализуются методы с логикой сложнее чем Добавить/Удалить ?
    #39649902
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAОй всё, пойду удалю к чёрту 7Zip, WinMerge, FileZilla, FastStone Capture и т.д., оставлю только FAR

FAR OS
...
Рейтинг: 0 / 0
Rest. А как реализуются методы с логикой сложнее чем Добавить/Удалить ?
    #39650048
SomeQuestions
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mad_nazgulskyANAОдин микросервис выдаёт список пользователей, другому ставится задача в очередь на "собери их документы и закинь на FTP"

Не совсем.
1) 1-микросервису ставиться задача получить список пользователей
2) 2-микросервису ставиться задача получить документы пользователя/пользователей
3) 3-микросервису ставиться задача закинуть документы на FTP

А всем этим рулить 0-микросервис которому пришел запрос POST на создание файлов на FTP :-)

давайте определимся ?
Вы против того, чтобы были методы мало мальски сложные ? Запрещено иметь методы "скопируй документы пользователей, которые ты должен найти по такому то фильтру в справочнике юзеров" ? Правильней разбить это на 2 метода - один должен получить список ID документов, а другой уже копировать ?
...
Рейтинг: 0 / 0
Rest. А как реализуются методы с логикой сложнее чем Добавить/Удалить ?
    #39650059
казинак
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
херня этот рест...
это просто еще один стиль написания приложений
не более того...

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

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

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

зызы
а по стилям можно спорить до посинения,
одному нравится много маленьких методов, другому - один большой
до тех пор пока это не влияет на систему, спорьте сколько угодно
а вот как повлияет, тут уже придется подчиняться правилам языка, фреймворка, и т.д.
...
Рейтинг: 0 / 0
Rest. А как реализуются методы с логикой сложнее чем Добавить/Удалить ?
    #39650065
казинак
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
казинака вот как повлияет, тут уже придется подчиняться правилам языка, фреймворка, и т.д.
например,
EJB поддерживает транзакционность, но для того чтобы несколько DML были в одной транзакции надо сделать обертку - сделать один метод а в нем вызвать те, что тебе надо.
Кто то скажет, что дурость, но если работаешь с ejb, то придется так и делать.

Или писать хранимку, и в нее кучу параметров передавать.
...
Рейтинг: 0 / 0
Rest. А как реализуются методы с логикой сложнее чем Добавить/Удалить ?
    #39650112
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
казинак,
Rest это не маленький-большой. Это мембер по java в сторону увел своими микросервисами)))
...
Рейтинг: 0 / 0
Rest. А как реализуются методы с логикой сложнее чем Добавить/Удалить ?
    #39650123
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SomeQuestionsдавайте определимся ?
Вы против того, чтобы были методы мало мальски сложные ? Запрещено иметь методы "скопируй документы пользователей, которые ты должен найти по такому то фильтру в справочнике юзеров" ? Правильней разбить это на 2 метода - один должен получить список ID документов, а другой уже копировать ?
Работа с пользователями - это одна ответсвенность. С документами - другая.
В каждой из этих областей методы могут быть сложными.

Вы когда классы проектируете, тоже всё в одну кучу пихаете?
...
Рейтинг: 0 / 0
Rest. А как реализуются методы с логикой сложнее чем Добавить/Удалить ?
    #39650152
SomeQuestions
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
skyANA,

Все в один класс не нужно пихать.
Но если на мой вопрос отвечать - вы считаете, что метода "скопируй документы пользователей, которые ты должен найти по такому то фильтру в справочнике юзеров" существовать не должно ? Нужно обязательно заводить промежуточный шаг - когда бэкэнд отрпавит во фронтэнд список найденных ID Документов. А тот переправит их в метод "скопируй документы с этими ID на фтп" ?
Хотелось бы узнать ответ на этот вопрос. Вы что предлагаете в этом случае то ?
...
Рейтинг: 0 / 0
Rest. А как реализуются методы с логикой сложнее чем Добавить/Удалить ?
    #39650201
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SomeQuestions,

Вы создали две одинаковые темы, в обоих я уже отписал. И Вам до сих пор не понятно, что?
...
Рейтинг: 0 / 0
Rest. А как реализуются методы с логикой сложнее чем Добавить/Удалить ?
    #39650246
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SomeQuestions,
REST это тупой импотент сервер и более умный клиент. (с)
Значит сложных методов в API быть не должно.
Любой прошлогодний ярлык на рабочем столе юзверя должен открыться с документом номер 15.
Т.е. Имя сложного метода разложить на урл, а параметры метода включить в урл после знаков "?".
Тогда твои ярлыки на ресурсы сервера пролежат на рабочем столе юзверя сколь угодно долго.
...
Рейтинг: 0 / 0
Rest. А как реализуются методы с логикой сложнее чем Добавить/Удалить ?
    #39650252
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123, не правильно.

REST (сокр. от англ. Representational State Transfer) - это архитектурный стиль взаимодействия компонентов распределённого приложения в сети.

Из того, что меняется стиль взаимодействия совершенно не следует, что компонента всего два: сервер и клиент.
И уж тем более не следует, что первый становится импотентом, а последний умнеет на глазах
...
Рейтинг: 0 / 0
Rest. А как реализуются методы с логикой сложнее чем Добавить/Удалить ?
    #39650725
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SomeQuestionsНо как в Rest укладываются задачи сложнее чем базовые команды Добавить/Удалить ? Что если требуется реализовать логику, к примеру, "найти все документы где создателем являлись пользователи из переданного списка и скопировать их на FTP". Как такую задачу впихнуть в подход Rest ?
Как человеку, ни хрена не знакомому с Aspnet Mvc мне кажется, что Вы путаете тёплое с мягким.

К примеру, одна моя система работает так:

1. По REST приход запрос. Например "найти все документы, где создателем являлись пользователи .... " и далее по списку.

2. Скорее всего, это будет запрос GET. Но если список длинный или параметры сложные, можно и POST, приложению без разницы.

3. REST-контроллер парсит параметры и формирует объект собственно запроса.

4. Если это запрос синхронный, то передаётся тому, кто способен его выполнить.

5. Полученный ответ форматируется в заданный в параметрах выходной формат и вываливается обратно.

6. Если задан соответствующий параметр, то вываливается не как ответ, а как файл для сохранения. То есть запрос "дай мне кучу записей в json показать в гриде" и "дай мне ту же кучу записей в Excel-файлике" отличаются по сути двумя параметрами.

7. Если запрос асинхронный, то он пихается в очередь, а в качестве ответа возвращается id из очереди. Потом по этому id можно будет получить ответ на запрос.

Так вот, к чему это всё. Эти Ваши "контроллеры" - они где-то дальше, это тот уровень, который обрабатывает запросы. А REST - это транспорт. Просто один из. Завтра я могу реализовать другой транспорт, какой-нибудь прости господи SOAP, а послезавтра и вовсе считывать запросы из файликов на дискетах - это никак не повлияет на бизнес-логику. Просто добавятся источники для очереди запросов.
...
Рейтинг: 0 / 0
Rest. А как реализуются методы с логикой сложнее чем Добавить/Удалить ?
    #39650749
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerА REST - это транспорт.

REST это абсолютно совершенно точно не транспорт . Давайте, раз уж вы так рьяно пытаетесь отделить тёплое от мягкого, не вносить сумятицу и не вводить в заблуждение людей.

REST это архитектурный стиль, нужен в первую очередь, как и любые другие архитектурные принципы, упростить решение задачи.

Транспорт сам по себе не является средством для упрощения задачи. Он либо есть и задача решается. Либо его нет и задача не решается. Тут уже давайте без демагогии.
...
Рейтинг: 0 / 0
Rest. А как реализуются методы с логикой сложнее чем Добавить/Удалить ?
    #39650754
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer2. Скорее всего, это будет запрос GET. Но если список длинный или параметры сложные, можно и POST, приложению без разницы.

И это уже будет не REST. Хотя вы можете назвать свой подход как угодно, хоть методом радужного пони. Жаль остальной мир вас не поймёт.
...
Рейтинг: 0 / 0
Rest. А как реализуются методы с логикой сложнее чем Добавить/Удалить ?
    #39650772
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttREST это абсолютно совершенно точно не транспорт .
Хорошо, полностью: в описываемой системе REST - это транспорт.

hVosttREST это архитектурный стиль, нужен в первую очередь, как и любые другие архитектурные принципы, упростить решение задачи.
Для того, чтобы упростить решение задачи, задача должна соответствовать возможностям и ограничениям стиля. Задача автора - строго противоположна философии "архитектурного стиля REST".

hVosttИ это уже будет не REST.
Зато это работает без дурацких проблем с длиной GET-запросов.

hVosttЖаль остальной мир вас не поймёт.
Это его проблемы.
...
Рейтинг: 0 / 0
Rest. А как реализуются методы с логикой сложнее чем Добавить/Удалить ?
    #39650783
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerhVosttREST это абсолютно совершенно точно не транспорт .
Хорошо, полностью: в описываемой системе REST - это транспорт.

Это на какой планете, Катрук?


softwarerhVosttИ это уже будет не REST.
Зато это работает без дурацких проблем с длиной GET-запросов.

hVosttЖаль остальной мир вас не поймёт.
Это его проблемы.

Если адекватный специалист придёт на собеседования, а там ему скажут «у нас REST», но REST-ом там не пахнет, он поймёт, что там работают какие-то чукчи, развернётся и уйдёт. Поэтому проблем никаких нет.

softwarerДля того, чтобы упростить решение задачи, задача должна соответствовать возможностям и ограничениям стиля. Задача автора - строго противоположна философии "архитектурного стиля REST".

REST не панацея.
...
Рейтинг: 0 / 0
Rest. А как реализуются методы с логикой сложнее чем Добавить/Удалить ?
    #39650796
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttREST не панацея.
это просто набор слов
...
Рейтинг: 0 / 0
Rest. А как реализуются методы с логикой сложнее чем Добавить/Удалить ?
    #39650804
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRoshVosttREST не панацея.
это просто набор слов

Ну так надо предметно обсуждать. У топикастера REST асоциируется с CRUD. Шаг вправо, шаг влево -- расстрел.

SomeQuestionsНо как в Rest укладываются задачи сложнее чем базовые команды Добавить/Удалить ? Что если требуется реализовать логику, к примеру, "найти все документы где создателем являлись пользователи из переданного списка и скопировать их на FTP". Как такую задачу впихнуть в подход Rest ?

Как должен здесь, допустим, называться метод в в классе? Хрен с ним с REST-ом.

FindDocumentsFromListAndCopyToFtp(list) ?

Примерно как, в каком магазине купить кроссовки и сколько соли класть в борщ.
...
Рейтинг: 0 / 0
Rest. А как реализуются методы с логикой сложнее чем Добавить/Удалить ?
    #39650807
Фотография StalkerS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerТак вот, к чему это всё. Эти Ваши "контроллеры" - они где-то дальше, это тот уровень, который обрабатывает запросы. А REST - это транспорт. Просто один из. Завтра я могу реализовать другой транспорт, какой-нибудь прости господи SOAP, а послезавтра и вовсе считывать запросы из файликов на дискетах - это никак не повлияет на бизнес-логику. Просто добавятся источники для очереди запросов.
+1, никто собственно не мешает создать endpoint с названием document/findallcopytoftp и запихать туда описываемую логику, это будет работать на web api, и протокол тут только транспорт и ничего более, легкий и удобный. Это однако не будет укладываться в пропагандируемую пуристами идею о get/post/put/delete ресурса, которую они считают неотьемлемой частью данной реализации.
...
Рейтинг: 0 / 0
Rest. А как реализуются методы с логикой сложнее чем Добавить/Удалить ?
    #39650810
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
StalkerSникто собственно не мешает создать endpoint с названием document/findallcopytoftp и запихать туда описываемую логику, это будет работать на web api

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


StalkerSЭто однако не будет укладываться в пропагандируемую пуристами идею о get/post/put/delete ресурса, которую они считают неотьемлемой частью данной реализации.

Всё верно. Долбанные пропагандисты. Пропагандируют ещё какие-то тупые методики, принципы, SOLID, DRY, KISS, совсем больные на голову. Книги пишут, их кто-то вообще читает? Вот тупицы. Понапридумывают всякого, а мы тут разгребай. Козлы!
...
Рейтинг: 0 / 0
Rest. А как реализуются методы с логикой сложнее чем Добавить/Удалить ?
    #39650874
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SomeQuestionsдавайте определимся ?
Вы против того, чтобы были методы мало мальски сложные ? Запрещено иметь методы "скопируй документы пользователей, которые ты должен найти по такому то фильтру в справочнике юзеров" ? Правильней разбить это на 2 метода - один должен получить список ID документов, а другой уже копировать ?

Я то не против.
Просто, если "не делить" методы, то высока вероятность появления God Object.
А че? Норм же.
Был на проекте у которого был метод в несколько тысяч строк.
То же не хотели делить.
Удобно же!
Вся логика в одном методе :-)
...
Рейтинг: 0 / 0
Rest. А как реализуются методы с логикой сложнее чем Добавить/Удалить ?
    #39650884
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Продублирую.

SomeQuestionsНо как в Rest укладываются задачи сложнее чем базовые команды Добавить/Удалить ? Что если требуется реализовать логику, к примеру, "найти все документы где создателем являлись пользователи из переданного списка и скопировать их на FTP". Как такую задачу впихнуть в подход Rest ?
при REST подходе Вы должны описать задачу на отсылку документов на FTP в виде объекта и POST-ом добавить этот объект в очередь.
Вернётся некий идентификатор задачи по которому Вы сможете GET-ом отслеживать её состояние, или DELETE-ом снять задачу.

Логика при этом остаётся в виде Добавить/Удалить, но это же на самом деле не логика.
...
Рейтинг: 0 / 0
Rest. А как реализуются методы с логикой сложнее чем Добавить/Удалить ?
    #39650892
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAВернётся некий идентификатор задачи по которому Вы сможете GET-ом отслеживать её состояние, или DELETE-ом снять задачу. Логика при этом остаётся в виде Добавить/Удалить, но это же на самом деле не логика.
Угу. Коллега хВостт обижается, когда эта не логика названа транспортом :)
...
Рейтинг: 0 / 0
Rest. А как реализуются методы с логикой сложнее чем Добавить/Удалить ?
    #39650898
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgulБыл на проекте у которого был метод в несколько тысяч строк.ну ты в крайности то не бросайся. Дешевый довод.
...
Рейтинг: 0 / 0
Rest. А как реализуются методы с логикой сложнее чем Добавить/Удалить ?
    #39650901
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerskyANAВернётся некий идентификатор задачи по которому Вы сможете GET-ом отслеживать её состояние, или DELETE-ом снять задачу. Логика при этом остаётся в виде Добавить/Удалить, но это же на самом деле не логика.
Угу. Коллега хВостт обижается, когда эта не логика названа транспортом :)
По определению REST - это просто способ организации взаимодействия между независимыми системами, или компонентами системы.
Теоретически, он не привязан к какому-либо транспорту, обеспечивающему это взаимодействие.
...
Рейтинг: 0 / 0
Rest. А как реализуются методы с логикой сложнее чем Добавить/Удалить ?
    #39650947
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123mad_nazgulБыл на проекте у которого был метод в несколько тысяч строк.ну ты в крайности то не бросайся. Дешевый довод.

Это не крайность, а суровая правда жизни.
Можно сделать метод, который имеет несколько зон ответственности.
Но как я и говорил, это вопрос холиварный.

По мне чем меньше модули, тем лучше.
Кому-то удобнее, когда весь блок логики находится в одном месте, а не размазан, на несколько методов/классов.

Можно делать и так, и так. Просто надо оценивать "чем мы платим".
...
Рейтинг: 0 / 0
Rest. А как реализуются методы с логикой сложнее чем Добавить/Удалить ?
    #39650956
alex55555
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttКозлы!
А ведь и правда, козлы.

Суть науки в системности, а разрозненные и разбросанные по разным сайтам случайным образом "изобретённые" новомодные аббревиатуры представляют из себя противоположность системы, то есть просто хаос.

Хотя буду благодарен, если кто-то кинет ссылкой на хоть сколько-нибудь систематизированное изложение всего этого супа из модных букв и слов. Но подозреваю - не дождусь.
...
Рейтинг: 0 / 0
Rest. А как реализуются методы с логикой сложнее чем Добавить/Удалить ?
    #39650957
alex55555
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgulПросто надо оценивать "чем мы платим".
Временем своей жизни.
...
Рейтинг: 0 / 0
Rest. А как реализуются методы с логикой сложнее чем Добавить/Удалить ?
    #39650977
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgulМожно делать и так, и так. Просто надо оценивать "чем мы платим".


Платим временем разработки.
Чем больше всяких классов и методов тем больше времени, особенно на обработку исключений (иногда это фуфло становится больше чем сама логика).
Грят, типа потом выигрываем в сопровождении - да нифига подобного. Целостный алгоритм читается и воспринимается лучше, чем огрызки обернутые вспомогательной логикой (обычно не сразу понятные).
После появления регионов в VS я стараюсь написать метод только тогда, когда этот метод можно использовать еще где то.
...
Рейтинг: 0 / 0
Rest. А как реализуются методы с логикой сложнее чем Добавить/Удалить ?
    #39650980
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex55555mad_nazgulПросто надо оценивать "чем мы платим".
Временем своей жизни.
+1
...
Рейтинг: 0 / 0
Rest. А как реализуются методы с логикой сложнее чем Добавить/Удалить ?
    #39651018
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttВсё верно. Долбанные пропагандисты. Пропагандируют ещё какие-то тупые методики, принципы, SOLID, DRY, KISS, совсем больные на голову. Книги пишут, их кто-то вообще читает? Вот тупицы. Понапридумывают всякого, а мы тут разгребай. Козлы!
им бы поучиться у других сначала
программируем всего то 100 лет

есть и другой опыт


например
- лучшая технология в формообразовании - литье!
- лучший способ соединения - неразъемное!
- лучшая деталь - отсутствие ее!



но фулеры про эти вещи нифига не знают
...
Рейтинг: 0 / 0
Rest. А как реализуются методы с логикой сложнее чем Добавить/Удалить ?
    #39651037
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul,
Метод размером с экран. Если ты о размере.
...
Рейтинг: 0 / 0
Rest. А как реализуются методы с логикой сложнее чем Добавить/Удалить ?
    #39651119
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosmad_nazgulМожно делать и так, и так. Просто надо оценивать "чем мы платим".
Платим временем разработки.
Чем больше всяких классов и методов тем больше времени, особенно на обработку исключений (иногда это фуфло становится больше чем сама логика).


Обработка исключений нужна, там где она нужна.
Скорее всего на endpoint'е
Во всех остальных методах, можно/нужно явно прописать те исключения, которые может выкинуть метод.
Т.е. исключение это нормальный результат метода.

По мне пусть метод честно выкинет исключение с полным стектрейсом, чем "обработает" его.
А мне потом гадать, какого фига результат не тот, который мне нужен.
Прецеденты были.

ViPRosГрят, типа потом выигрываем в сопровождении - да нифига подобного. Целостный алгоритм читается и воспринимается лучше, чем огрызки обернутые вспомогательной логикой (обычно не сразу понятные).


Выигрываем.
Т.к. обычно "чукча не читатель, чукча писатель", то проще не разбираться в полете мысли предыдущего программиста, а просто переписать метод/класс под новые требования.

ViPRosПосле появления регионов в VS я стараюсь написать метод только тогда, когда этот метод можно использовать еще где то.

Каждый пишет, как ему нравиться.

Просто я на своем веку видел столько таких простыней.
Начиная с FoxPro и Clipper (где по другому просто нельзя было)
Что у меня появилось стойкое убеждение, что так делать лучше не надо.
Т.к. потом читать эту простыню трудно.
Ну а тесты писать просто невозможно. :-)
...
Рейтинг: 0 / 0
Rest. А как реализуются методы с логикой сложнее чем Добавить/Удалить ?
    #39651120
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123mad_nazgul,
Метод размером с экран. Если ты о размере.

С какой экран?
Экран в 4К и экран 80x25 символов - это немного разные экраны :-)
...
Рейтинг: 0 / 0
Rest. А как реализуются методы с логикой сложнее чем Добавить/Удалить ?
    #39651132
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgulPetro123mad_nazgul,
Метод размером с экран. Если ты о размере.

С какой экран?
Экран в 4К и экран 80x25 символов - это немного разные экраны :-)
У нас у всех прогеров одинаковые.
У тебя наверно 80x25 раз спросил))))))
...
Рейтинг: 0 / 0
Rest. А как реализуются методы с логикой сложнее чем Добавить/Удалить ?
    #39651133
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgulПросто я на своем веку видел столько таких простыней.недавно искал ошибку в методе 850 строк).
...
Рейтинг: 0 / 0
Rest. А как реализуются методы с логикой сложнее чем Добавить/Удалить ?
    #39651141
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgulНу а тесты писать просто невозможно. :-)тесты тоже под большим ?
...
Рейтинг: 0 / 0
Rest. А как реализуются методы с логикой сложнее чем Добавить/Удалить ?
    #39651153
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Парни, поищите на hh.ru "REST API эксперт" и посмотрите на зпшечку.
Потом будете скепсис свой изливать
...
Рейтинг: 0 / 0
Rest. А как реализуются методы с логикой сложнее чем Добавить/Удалить ?
    #39651155
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

мы просто отвергаем HTTP<->CRUD
...
Рейтинг: 0 / 0
Rest. А как реализуются методы с логикой сложнее чем Добавить/Удалить ?
    #39651159
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosskyANA,

мы просто отвергаем HTTP<->CRUDЧего?

REST - это не CRUD
...
Рейтинг: 0 / 0
Rest. А как реализуются методы с логикой сложнее чем Добавить/Удалить ?
    #39651445
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123mad_nazgulПросто я на своем веку видел столько таких простыней.недавно искал ошибку в методе 850 строк).

Для меня самое веселое было внести изменение в программе на Clipper'е, где активно использовались блоки кода и макроподстановки.
Так чтобы добавить новые требования и не изменить старые.
До определенного момента получалось...
...
Рейтинг: 0 / 0
Rest. А как реализуются методы с логикой сложнее чем Добавить/Удалить ?
    #39651508
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosим бы поучиться у других сначала
программируем всего то 100 лет

Всё верно. Молодо, зелено. И толпы не хотят взрослеть. Ведь молодость это так прекрасно


ViPRosно фулеры про эти вещи нифига не знают

Знают, ты проста не читал ))
...
Рейтинг: 0 / 0
Rest. А как реализуются методы с логикой сложнее чем Добавить/Удалить ?
    #39651666
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgulPetro123пропущено...
недавно искал ошибку в методе 850 строк).

Для меня самое веселое было внести изменение в программе на Clipper'е, где активно использовались блоки кода и макроподстановки.
Так чтобы добавить новые требования и не изменить старые.
До определенного момента получалось...
Все там получалось :) Какая была лафа
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
do case
                    case type("kk2")='C'
                         kk2=rtrim(kk2)
                         if empty(filt)
                            filt='substr('+cur_field+',1,'+ltrim(rtrim(str(len(kk2))))+')'+otn[nnn]+'"'+kk2+'"'
                         else
                            filt=filt+'.and.'+'substr('+cur_field+',1,'+ltrim(rtrim(str(len(kk2))))+')'+otn[nnn]+'"'+kk2+'"'
                         endif
                    case type("kk2")='L'
                         if empty(filt)
                            filt=cur_field+'.and.'+kk2
                         else
                            filt=filt+'.and.'+cur_field+'.and.'+kk2
                         endif
                    case type("kk2")='D'
                         if empty(filt)
                            filt='dtos('+cur_field+')'+otn[nnn]+'"'+dtos(kk2)+'"'
                         else
                            filt=filt+'.and.'+'dtos('+cur_field+')'+otn[nnn]+'"'+dtos(kk2)+'"'
                         endif
                    case type("kk2")='N'
                         if empty(filt )
                            filt=cur_field+otn[nnn]+ltrim(str(kk2))
                         else
                            filt=filt+'.and.'+cur_field+otn[nnn]+ltrim(str(kk2))
                         endif
                 endcase
                 set filter to &filt
...
Рейтинг: 0 / 0
56 сообщений из 56, показаны все 3 страниц
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Rest. А как реализуются методы с логикой сложнее чем Добавить/Удалить ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]