Actions, Controllers and Results
大部分的请求到play的处理我们称为一个action。
play将请求的request()获取到然后产生一个result返回给客户端。
大概代码如下
public Result index() {
return ok("Got request " + request() + "!");
}
result来自play.mvc.Result
其中的控制器继承自controller(play.mvc.Controller)
返回的结果使用Result返回。ok只是其中一种
也可以返回例如badRequest()等
Result ok = ok("Hello world!");Result notFound = notFound("Page not found");
Result pageNotFound = notFound("").as("text/html");
Result badRequest = badRequest(views.html.form.render(formWithErrors));
Result oops = internalServerError("Oops");Result anyStatus = status(488, "Strange response type");
HTTP routing
play里的路由在conf/routes里定义
每一个请求的定义分三部分构成
①请求的类型(GET,POST,PUT,DELETE......)
②请求的路径 /api/apps/:id
③请求的方法在控制器的位置和参数声明 controllers.ApiController.apps(id: Long)
这里要说明的有
请求在路径里的参数用:加名字,方法里的参数声明是先名称后类型。
也可以在这里写明参数的默认值,比如请求的参数如果有就用传过来的值,如果没有就用默认值
controllers.ApiController.apps(pageSize: Integer ?= 1, pageSize: Integer ?= 10)
Manipulating the response
Session and Flash scopes
Body parsers
play里如果有些参数是通过请求体传过来,那么我们可以通过play里内置的解析来处理。
在java里直接使用request().body().asJson()即可获得请求的body的json类型
content-type为application/json会被解析成json
如果要获取json里的某些字段,json.get("字段名").asText()
Action composition
我们可以用注解完成authenticator。我们先创建一个authenticator的java类,当然也可以创建比如admin的或者其他权限的authenticator
继承自Security.Authenticator
这里面需要重写getUsername,如果返回null则验证失败,返回username验证成功
这样,我们在请求的前面加此注解,就可以进行验证了
网友评论