Scalatra路由:方法重写与匹配器详解
1. 方法重写
在理想情况下,客户端能够完全遵循HTTP标准。然而在实际应用中,许多Web浏览器仅支持HTTP方法中的GET和POST子集。对于只需获取页面和提交表单数据的浏览器来说,这已经足够,但随着Web API和网站之间的界限变得模糊,这种支持就显得不足了。我们希望将浏览器作为API的一等客户端来支持。
为了解决这个问题,人们开发了各种临时解决方案。其中一种流行的方法是在POST请求中查找特殊的 _method 参数。如果存在该参数,则根据该参数来解释请求。以下是一个示例代码:
class RecordStore extends ScalatraServlet {
delete("/artists/:name") {
if (Artist.delete(params("name")).isDefined)
NoContent()
else
NotFound()
}
post("/item") {
params.get("method") match {
case Some("delete") =>
if (Artist.delete(params("name")).isDefined)
NoContent()
else
NotFound()
case None =>
val artist = parseArtist(request)
Artist
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



