API REST возвращает новый ресурс при обновлении существующего

У меня есть ресурс ProjectStep в моем приложении, и мне нужно создать конечную точку API, которая будет использоваться для обновления моего ProjectStep, чтобы пометить его как завершенный и создать следующий ProjectStep. В моем REST API я мог бы сделать что-то вроде этого:

PATCH /project-mark/1
POST  /project-mark

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

Какой метод вы бы использовали? Запрос PATCH, обновляющий существующий ресурс и возвращающий другой ресурс, не кажется хорошей идеей.

Спасибо

Это больше грамматика, чем фактическое кодирование. Если вы не следуете действительно строгим правилам, вы можете их использовать. Проще говоря, используйте @jreikes, оставив интересный комментарий к вопросу это: терминология, используемая в этом ответе, будет понятна только тем, кому не нужно задавать основной вопрос.

Andrei 15.11.2018 11:44

Большое спасибо за ваши ответы;)

dumartinetj 15.11.2018 11:57

Не могли бы вы оценить мой ответ?

Alesandro Giordano 15.11.2018 11:59

@AlesandroGiordano Я сделал это, но у меня пока недостаточно репутации, поэтому мой голос не отображается. Хорошего дня

dumartinetj 15.11.2018 13:14
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
4
343
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Используйте запрос PUT, пожалуйста, перейдите по этой ссылке

https://stackoverflow.com/questions/630453/put-vs-post-in-rest

Используйте API PUT в первую очередь для обновления существующего ресурса (если ресурс не существует, API может решить создать новый ресурс или нет). Если с помощью PUT API был создан новый ресурс, исходный сервер ДОЛЖЕН проинформировать пользовательский агент с помощью ответа HTTP с кодом 201 (Создан), а если существующий ресурс был изменен, либо 200 (ОК), либо 204 (Нет содержимого) коды ответа ДОЛЖНЫ быть отправлены, чтобы указать на успешное завершение запроса.

Если запрос проходит через кеш и Request-URI идентифицирует один или несколько кэшированных в данный момент объектов, эти записи СЛЕДУЕТ рассматривать как устаревшие. Ответы на этот метод не кэшируются.

В соответствии с рекомендациями SO, когда вы найдете новый вопрос, на который уже был дан ответ в SO, вы должны пометить этот вопрос как повторяющийся вместо того, чтобы повторно использовать тот же ответ, чтобы заработать очки репутации с усилиями других пользователей ;-)

gp_sflover 15.11.2018 14:07

Я не знаю как это сделать

Alesandro Giordano 15.11.2018 14:16

Под тегами вопроса находится текстовая ссылка «флаг» (рядом с "редактировать" и "поделиться"). Откроется всплывающее окно, в котором вы сможете выбрать правильную причину пометки.

gp_sflover 15.11.2018 14:31

Но это вопрос о том, какой вызов я должен сделать, чтобы что-то сделать, "дубликат" касается разницы между вызовами ... пользователь должен знать запрос PUT, прежде чем

Alesandro Giordano 15.11.2018 14:33

OP спросил, какой метод лучше использовать для определенного действия, потому что он просто не знает всех доступных методов, поэтому ответ в дубликате правильный, потому что он дал OP знания, чтобы самому понять, какой метод использовать для в этом случае (и все будущие). Например, на SO есть множество ежедневных вопросов, которые вызывают ошибку php sintax, поэтому правильным ответом на 99% этих вопросов является объяснение (которые уже существуют годами на SO), чтобы начать понимать, откуда они могут исходить и как их отлаживать.

gp_sflover 15.11.2018 14:47

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

gp_sflover 15.11.2018 14:52

Чем вы @gp_sflover, вот описание

Alesandro Giordano 15.11.2018 14:54

Как всегда, я читал в спешке и понял, что, возможно, есть другие ответы, которые можно использовать в качестве лучшей ссылки для дубликата (например, как В чем разница между методами HTTP GET, POST, PUT и DELETE), но независимо от уже объясненных пунктов (не мой голос против).

gp_sflover 15.11.2018 15:07

Другие вопросы по теме