В REST метод POST используется для создания объекта. И GET используется для запроса сущностей. Правильно?
Не совсем. GET используется для получения представлений ресурсов . POST намеренно расплывчато - все, что не стоит стандартизировать может использовать POST.
, когда я хочу отправить Json, чтобы сделать запрос, что лучший способ?
Нет лучшего способа сделать это, просто компромисс.
Основа c сюжета HTTP заключается в том, что вы получаете представления ресурсов. Если требуемый ресурс не существует, вы создаете новый. Таким образом, поток «REST» будет выглядеть как отправка запроса на сервер для создания ресурса «ответ на мой запрос», а затем использование GET для получения текущего представления этого ресурса. Это здорово, потому что мы можем получить последнее представление об этом ресурсе в любое время, когда беспокоимся, что наша копия устарела. Другие люди с тем же запросом могут использовать тот же ресурс, поэтому мы можем использовать кэш общего назначения для выполнения большой работы. Конечный результат - «масштабирование сети».
Хорошо, не так уж и здорово, потому что мы узнали, что отправка информации по незащищенным каналам - плохая идея; но мы можем разместить прокси-сервер общего назначения перед нашим сервером и таким образом получить некоторый масштаб.
Но «создать новый ресурс» - большая церемония, когда вы ожидаете, что запрос потребуется только один раз. .
В любом случае при создании нового ресурса POST использовался, так почему бы сразу не вернуть представление решения? И ответ: go прямо сейчас! это прекрасно работает ... но не дает никакой поддержки кеша. Вы эффективно выполняете удаленный вызов под видом изменения ресурса.
Кроме того, POST не обещает идемпотентную семантику - в ненадежной сети запросы могут быть потеряны, а компоненты общего назначения не будут знать что в данном конкретном случае просто повторять один и тот же запрос безвредно.
PUT имеет идемпотентную семантику ... но он также имеет очень конкретные c мнения о содержимом полезной нагрузки которые не совпадают с «запросом».
Вы можете копаться в других стандартизированных методах , но на самом деле хороших подходов нет. Единственные близкие методы - это SEARCH и REPORT, которые связаны с семантикой WebDAV.
Вы можете изобрести свой собственный нестандартный метод; но компоненты общего назначения этого не поймут.
Вы можете стандартизировать новый метод с нужной вам семантикой, но это большая работа.
Или вы можете просто использовать POST .
Помните, что сеть захватила мир, используя только GET и POST. Так что, наверное, хорошо.