REST — дизайн API для публикации данных формы и получения другого ресурса

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

Я начал изучать эту проблему, разделив ее на два API ниже и последовательно вызывая ее.

  1. POST API для создания ведущего ресурса.
  2. GET API для извлечения запрошенного ресурса в случае успеха POST.

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

Как я могу решить эту проблему без ущерба для скорости? Должен ли я использовать запрос POST и возвращать запрошенные данные в ответ?

P.S. Я не могу вызывать оба API параллельно


person nak    schedule 07.06.2017    source источник


Ответы (2)


Да, это именно то, что вы должны сделать - запрос POST должен ответить только что созданным ресурсом, который впоследствии может использовать клиент.

person Alexandru Marculescu    schedule 07.06.2017
comment
Вы предлагаете, чтобы я сначала запускал POST, а затем GET от моего клиента? Если да, не повлияет ли это на скорость поиска данных? Просто чтобы уточнить, запрос GET не будет использовать вновь созданный ресурс. POST и GET будут работать на отдельном ресурсе - person nak; 08.06.2017
comment
Я говорю, что вы должны использовать ответ, полученный от вашего POST, а не отдельный GET - person Alexandru Marculescu; 08.06.2017

Вы думали о проблеме с точки зрения веб-разработчика. У вас есть этот поток байтов, и для его отправки клиентам не требуется отправка формы, достаточно запроса GET. Но с точки зрения бизнеса получение файла требует отправки формы, а именно личных данных пользователя. Даже с точки зрения пользователя это одна операция. Пользователь отправляет необходимые данные, чтобы получить желаемый ответ (например, загрузку файла). Сохранение входных данных (личные данные пользователя) является побочным эффектом, а не ожидаемым пользователем результатом.

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

person Nicholas Shanks    schedule 17.06.2017