Каков наилучший способ объединить метод GET и POST в API промежуточного программного обеспечения? - PullRequest
0 голосов
/ 25 ноября 2018

Мне нужно создать API промежуточного программного обеспечения, который будет проверять наличие ключа в моей базе данных.Если ключ существует, он должен просто получить его (метод GET).Если нет, то API должен создать ключ и его значение в базе данных и вернуть его (метод POST).Итак, поскольку у нас есть 2 принципиально разных метода, объединяемых в этом API, правильно ли это делать?Каким должен быть лучший способ разработки такого API?

Ответы [ 3 ]

0 голосов
/ 25 ноября 2018

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

Если клиент API выполняет запрос GET, происходит 2 вещи:

  1. Возвращается существующая запись
  2. Создается новая запись и возвращается

Клиенту на самом деле может быть все равно, произошла ли 1 или 2.С точки зрения клиента, это может выглядеть так, как будто ресурс всегда существовал (даже если он был технически только что создан).

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

0 голосов
/ 25 ноября 2018

Я не знаю о вашей ситуации, обычно лучше, чтобы ваш отделился от должности.Хотя, если ваш клиент считает, что ему нужно создать запись, а затем опубликовать данные, я не вижу проблемы с возвратом ресурса и 409 для ресурса, который уже существует.Вот аналогичный вопрос HTTP-код ответа для POST, когда ресурс уже существует

Тогда клиент может обрабатывать 409 по-разному или так же, как 200, в зависимости от ваших потребностей.

0 голосов
/ 25 ноября 2018

Не объединяйте их.

Верните ноль результатов из вашего GET метода, если ваша запись не существует.Затем в клиенте, если вы получите ноль результатов, POST необходимая информация для другой конечной точки API.

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

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