With this method, possibly create a simple response by current Accept header
With this method, possibly create a simple response by current Accept header
trait MyController extends BaseController with RespondToSupport { import HttpService._ // !!!important, because macro expand with methods from this namespace def index = { respondTo { case `text/html` => "html response" case `application/json` if this_ajax_request => "json response" } } } //And then request with Accept: `text/html` we get a "html response" //And when request with Accept: `application/json` and wit ajax, we get a "json response" //Otherwise get Error: 406 Not Acceptable
Under the hood this transform to next code:
val header = request.headers.find(_.name == "Accept") //request from BaseController header match { case Some(header) => val h = header.value h match { case value if h.contains(`media/type`.value) && you_guard => respondWithMediaType(`media/type`) { complete { you_response } // from previous: it's a "html response" or "json response" } //other cases case _ => reject(UnacceptedResponseContentTypeRejection) } case None => reject(UnacceptedResponseContentTypeRejection) }
Route
(respondToSupport: StringAdd).self
(respondToSupport: StringFormat).self
(respondToSupport: ArrowAssoc[RespondToSupport]).x
(Since version 2.10.0) Use leftOfArrow
instead
(respondToSupport: Ensuring[RespondToSupport]).x
(Since version 2.10.0) Use resultOfEnsuring
instead