1、play FrameWork2.6 ----- Play ScalaActions

本文详细介绍了Play框架中创建Action的四种方法,包括最简单的代码块返回、使用Request对象、通过隐式转换以及指定特定参数。同时,文章还讲解了如何在控制器中生成多个Action,以及常见的Result类型和重定向操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

play是一个非常好的框架 希望他可以发展的更好
该文档是我自己学习的时候翻译的,可能有的地方有曲解,有翻译的不对的地方,希望大家可以共同提出,共同进步,谢谢
创建一个action的几种方式:

1、第一种最简单的方式,一个有返回值的代码块

Action {
  Ok("Hello world")
}

2、第一种没有涉及到request的使用,但是在http开发中request的是非常有用的,所以我们可以通过request=>来引入

request
Action { request =>
  Ok("Got request [" + request + "]")
}

3、我们可以将Action拆分,通过隐式转换的方式去使用request

def action = Action { implicit request =>
   anotherMethod("Some para value")
   Ok("Got request [" + request + "]")
 }

def anotherMethod(p: String)(implicit request: Request[_]) = {
 // do something that needs access to the request
 }

4、最后一种方式,可以指定一个特定(specify)的额外参数参数

Action(parse.json) { implicit request =>
  Ok("Got request [" + request + "]")
}

controller创建(生成)多个action:

controller和其他的类没有什么不同,就是在controller中创建了多个Action,controller利用依赖注入来创建controller类

1.最简单的例子定义一个action生产者,就是一个无参的方法,这个方法返回一个Action

package controllers

import javax.inject.Inject

import play.api.mvc._

class Application @Inject()
(cc: ControllerComponents)
extends AbstractController(cc) {

  def index = Action {
    Ok("It works!")
  }

}

2.当然我们可以获取并捕捉到参数,对其进行处理

def hello(name: String) = Action {
  Ok("Hello " + name)
}
简单的返回值

现在我们了解一下简单的Play的返回值,这个Results是有header和body组成的,header有一个状态值和一个set这两个值来保存,这个返回值类是play.api.mvc.Result

import play.api.http.HttpEntity

def index = Action {
  Result(
    header = ResponseHeader(200, Map.empty),
    body = HttpEntity.Strict(ByteString("Hello world!"), Some("text/plain"))
  )
}

有以下几个常用的Result

Ok("Hello world!")
NotFound
NotFound(<h1>Page not found</h1>)
BadRequest(views.html.form(formWithErrors))
InternalServerError("Oops")
Status(488)("Strange response type")

Ok和NotFound这些都是返回一个Status,这个是Status继承了Result
接口文档地址https://www.playframework.com/documentation/2.6.x/api/scala/index.html#play.api.mvc.Results
重定向
def index = Action {
Redirect("/user/home")
}
默认的重定向的状态码是303,我们也可以指定特定的状态码
def index = Action {
Redirect("/user/home", MOVED_PERMANENTLY)
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值