Используйте ответ от спокойного вызова конечной точки веб-службы для последующего использования в другом вызове конечной точки веб-службы - PullRequest
0 голосов
/ 25 апреля 2018

Я хочу, чтобы ответ от одного вызова веб-службы позднее использовался другим вызовом веб-службы. Как мне реализовать поток кода для него. Нужно ли вести сеанс? Я создаю успокоительные веб-сервисы, используя Spring, Java Если пользователь 1 вызывает endPoint / getUserRecord, а через 1 минуту вызывает / checkUserRecord, который использует данные первого вызова, как это сделать, поскольку пользователь 2 может вызвать / getUserRecord до того, как пользователь 1 вызовет / checkUserRecord Я использую Spring Java для создания веб-сервисов RESTFul.

Спасибо, Arpit

Ответы [ 2 ]

0 голосов
/ 25 апреля 2018

технически вы можете передать UserRecord от проверки до проверки.

GET / userrecords / -> вернуть одну или несколько записей

POST / checkUserRecord с записью, которую вы хотите проверить как тело запроса.

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

Итак, как сказал Веселин Давыдов, вам, вероятно, следует придерживаться чистой парадигмы REST без сохранения состояния и полагаться на идентификатор:

так

GET / userrecords / -> [{"id": 1, "data": "myrecorddata"}, ...]

GET / checkUserRecord / {id} like / checkUserRecord / 1

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

Если вы не управляете огромным количеством данных, я думаю, вам следует в первую очередь сосредоточиться на предоставлении понятного, поддерживаемого и безопасного в использовании API REST с дизайном без сохранения состояния.

0 голосов
/ 25 апреля 2018

Если вы используете Spring Boot, он предоставляет способ включить кэширование на вашем объекте Repository, что вы и пытаетесь решить.

@EnableCaching
org.springframework.cache.annotation.EnableCaching

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

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