Я настраивал REST API в Play Framework ( 2.6 ) в Scala и пытался реализовать использование ( Scala ) формы , но у меня возникают некоторые трудности при попытке найти лучший способ обновления только значений, которые изменились при отправке формы. Я использовал эту статью в качестве справочной (и других), и она использует HTTP-запрос PATCH
, показанный как нечто похожее на это с Routes файл:
PATCH /update/:collName controllers.IndexC.update(collName: String, oId: Option[BSONObjectID])
Однако, если я перейду к этому в моем ( Play ) шаблоне для действия формы , например:
@form(action = routes.IndexC.update(collName, oId), 'method -> "patch", ...)
Затем выдается ошибка, что он не может найти файл (пытается использовать GET
запрос). Я где-то читал, что это может произойти, если браузер не поддерживает PATCH
как HTTP-запрос . Или, может быть, я совершенно не понимаю этого - мы назовем это частью 1 моего пробела в знаниях .
Также ( часть 2 моего пробела в знаниях ) Я пытаюсь понять, как можно извлечь только значения из представления формы (а не все значения в поле ввода). Итак, предположим, что у меня была очень простая модель и форма Scala, выглядящая так:
case class Countries(countryName: String, countryCode: String, currencyCode: String)
object Countries {
val form = Form(
mapping(
"countryName" -> nonEmptyText,
"countryCode" -> nonEmptyText,
"currencyCode" -> nonEmptyText
)(Countries.apply)(Countries.unapply)
)
}
Есть ли способ, которым bindFromRequest
может помочь получить только те входные значения, которые изменились (из коллекции Mongo базы данных и из тех, которые изначально были введены в форму - с использованием Countries.form.fill
). Или, может быть, это лучше сделать в другом месте с более разумным подходом? Или, может быть, решение part 1 делает это неуместным. Большое спасибо.