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

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

Но как в Rest укладываются задачи сложнее чем базовые команды Добавить/Удалить ? Что если требуется реализовать логику, к примеру, "найти все документы где создателем являлись пользователи из переданного списка и скопировать их на FTP". Как такую задачу впихнуть в подход Rest ?
...
Рейтинг: 0 / 0
23.05.2018, 20:46
    #39649007
irbis_al
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Rest. А как реализуются методы с логикой сложнее чем Добавить/Удалить ?
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
23.05.2018, 21:23
    #39649022
SomeQuestions
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Rest. А как реализуются методы с логикой сложнее чем Добавить/Удалить ?
irbis_al,

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

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

redmine
jira
confluence
rancher
Jenkins
и т.д..

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Из того, что меняется стиль взаимодействия совершенно не следует, что компонента всего два: сервер и клиент.
И уж тем более не следует, что первый становится импотентом, а последний умнеет на глазах
...
Рейтинг: 0 / 0
27.05.2018, 19:21
    #39650725
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Rest. А как реализуются методы с логикой сложнее чем Добавить/Удалить ?
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. А как реализуются методы с логикой сложнее чем Добавить/Удалить ? / 25 сообщений из 56, страница 1 из 3
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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