Является ли отправка строкового представления состояния клиенту хорошим способом создания веб-приложения без сохранения состояния? - PullRequest
0 голосов
/ 13 декабря 2018

У меня есть набор требований, которые включают создание веб-приложения Java, которое состоит из нескольких этапов, которые должны быть без сохранения состояния.

Отсутствие состояния в этом контексте означает, что будет набор REST API, который будет предоставлять части конечного объекта данных, которые будут перенаправлены на последний этап многоэтапного процесса.Конечный объект данных будет XML-представлением данных, которые мы собираем.Например, если мы хотим создать следующий объект данных (здесь я использую XML, нам, вероятно, было бы лучше использовать JSON).

<person>
    <info>
        <id>123</id>
        <firstName>Rocky</firstName>
        <lastName>Robbin</lastName>
    </info>
    <address>
        <street1>1 Treetop Lane</street1>
        <city>Covington</city>
        <state>LA</state>
        <zip>70433</zip>
    </address>
    <interests>
        <interest>Hopping</interest>
        <interest>Bopping</interest>
        <interest>Singing his song</interest>
    </interests>
</person>

У нас есть три службы.

  • NameService возвращает информацию в блоке <info>
  • AddressService возвращает информацию в блоке <address>
  • InterestService возвращает информацию в блоке <interests>

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

Один из способов сделать это можно следующим образом.

На начальной странице вызовите службу NameService и заполните блок этой информацией.Захватите эту информацию в JSP, который контроллер передает как

<input type="hidden" name="person" value="[xml_string]" />

Где [xml_string] выглядит следующим образом:

<person>
    <info>
        <id>123</id>
        <firstName>Rocky</firstName>
        <lastName>Robbin</lastName>
    </info>
</person>

Следующий контроллер принимает значение ввода "person"(строка xml), вызывает службу адресации и обновляет строку xml.Эта информация передается следующему JSP как

<input type="hidden" name="person" value="[xml_string]" />

Где [xml_string] выглядит так:

<person>
    <info>
        <id>123</id>
        <firstName>Rocky</firstName>
        <lastName>Robbin</lastName>
    </info>
    <address>
        <street1>1 Treetop Lane</street1>
        <city>Covington</city>
        <state>LA</state>
        <zip>70433</zip>
    </address>
</person>

Следующий контроллер принимает значение ввода "person" (xmlстрока), вызывает службу Intersts и обновляет строку XML.Эта информация передается следующему JSP как

<input type="hidden" name="person" value="[xml_string]" />

Где [xml_string] выглядит следующим образом:

<person>
    <info>
        <id>123</id>
        <firstName>Rocky</firstName>
        <lastName>Robbin</lastName>
    </info>
    <address>
        <street1>1 Treetop Lane</street1>
        <city>Covington</city>
        <state>LA</state>
        <zip>70433</zip>
    </address>
    <interests>
        <interest>Hopping</interest>
        <interest>Bopping</interest>
        <interest>Singing his song</interest>
    </interests>
</person>

Шаблон продолжается до тех пор, пока не будет собрана вся необходимая информация.

Каковы преимущества и недостатки этого подхода?Какие есть альтернативы?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...