Я новичок в фреймворке и пытаюсь интегрировать микросервис. Я использую WSClient для вызова веб-службы. Чтобы вызвать POST rest API, я передаю тело запроса, которое содержит некоторые обязательные параметры и некоторые необязательные. Мой вопрос заключается в том, как передать дополнительные параметры здесь?
Пример моего кода
def add = Action.async { implicit request =>
UserDataForm.bindFromRequest.fold(
profileForm => {
val response = profileForm.errorsAsJson
Future(BadRequest(response).as("application/json"))
},
userData => try {
ws.url("http://localhost:9000/" + "api/profile")
.post(
Map("userId" -> userData.userId, "firstName" -> userData.firstName, "lastName" -> userData.lastName, "country" -> userData.country, "address" -> userData.address)).map { response =>
OutputWithErrors(response.body, response.status)
}
} catch {
case e: Exception =>
Future(BadRequest(Message(false, e.getMessage).toJson.prettyPrint).as("application/json"))
})
}
Так что здесь address
является необязательным параметром.
И данные формы, т. Е. userData
здесь
case class UserForm(userId: String, firstName: String, lastName: String, country: String, address: Option[String])
val UserDataForm = Form(
mapping(
"userId" -> nonEmptyText,
"firstName" -> nonEmptyText,
"lastName" -> nonEmptyText,
"country" -> nonEmptyText,
"address" -> optional(text)
)(UserForm.apply)(UserForm.unapply)
)
Поэтому при вызове API службы отдыха возле ws.url(...)post(Map("userId" -> userData, ...))
компилятор жалуется на No implicits found for parameter evidence$2: BodyWritable[Map[String, Serializable]]