Можно ли при разработке REST API требовать завершения поиска ресурса, прежде чем разрешить его создание? - PullRequest
0 голосов
/ 14 октября 2019

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

Но в базах данных среднего размера более вероятно, что этобыть дубликатом одного и того же человека. Чтобы предотвратить создание дубликатов, наш пользовательский интерфейс требует, чтобы пользователь сначала искал человека. Если желаемая запись существует, пользователь может выбрать ее. Если нет, они могут добавить его. Им разрешается добавлять людей с одинаковыми именами и dob, если они нуждаются - но обычно они хотят существующую запись.

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

В ситуации с API я хотел бы иметь возможность потребовать от пользователя сначала выполнить поиск, а затем добавить его при необходимости, но я не уверен, какAPI обычно обрабатывает такую ​​ситуацию. Что обычно делается?

1 Ответ

1 голос
/ 15 октября 2019

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

То есть, вы можете представить себе веб-сайт, который проведет вас через протокол приложения домена: выполучить URL с закладкой;эта страница содержит ссылку, по которой вы переходите на форму поиска;вы отправляете форму с вашими критериями поиска, и она возвращает список возможных совпадений и ссылку;перейдя по ссылке, вы попадете в форму «Создать новую запись»;пользователь отправляет эту форму, чтобы запросить, чтобы сервер создал нового пользователя.

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

Вы можете сделать этот URL сложнее угадать, кодируя в него информацию. Например, во время поиска вы можете закодировать ключевые термины поиска в URL, передать их в форму и, в конечном итоге, в отправку формы, после чего вы сможете проверить, соответствуют ли представленные данные записи предыдущему поиску.

Одним из преимуществ гипермедиа API является то, что, поскольку клиенты не используют семантику написания URI, сервер может кодировать информацию в эти URI для последующего использования. К сожалению, из-за ограничения на «RESTful» из-за ограничения гипермедиа возникли проблемы с получением доли ума. И, конечно, этот дизайн на самом деле не защищает вас от клиентов, которые действительно хорошие гадатели.

...