Actions, Controllers and Results
大部分的請(qǐng)求到play的處理我們稱為一個(gè)action。
play將請(qǐng)求的request()獲取到然后產(chǎn)生一個(gè)result返回給客戶端。
大概代碼如下
public Result index() {?
? ? ? ?return ok("Got request " + request() + "!");
}
result來自play.mvc.Result
其中的控制器繼承自controller(play.mvc.Controller)
返回的結(jié)果使用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里定義
每一個(gè)請(qǐng)求的定義分三部分構(gòu)成
①請(qǐng)求的類型(GET,POST,PUT,DELETE......)
②請(qǐng)求的路徑 ?/api/apps/:id
③請(qǐng)求的方法在控制器的位置和參數(shù)聲明 ??controllers.ApiController.apps(id: Long)

這里要說明的有
請(qǐng)求在路徑里的參數(shù)用:加名字,方法里的參數(shù)聲明是先名稱后類型。
也可以在這里寫明參數(shù)的默認(rèn)值,比如請(qǐng)求的參數(shù)如果有就用傳過來的值,如果沒有就用默認(rèn)值
?controllers.ApiController.apps(pageSize: Integer ?= 1, pageSize: Integer ?= 10)
Manipulating the response
Session and Flash scopes
Body parsers
play里如果有些參數(shù)是通過請(qǐng)求體傳過來,那么我們可以通過play里內(nèi)置的解析來處理。
在java里直接使用request().body().asJson()即可獲得請(qǐng)求的body的json類型
content-type為application/json會(huì)被解析成json
如果要獲取json里的某些字段,json.get("字段名").asText()


Action composition
我們可以用注解完成authenticator。我們先創(chuàng)建一個(gè)authenticator的java類,當(dāng)然也可以創(chuàng)建比如admin的或者其他權(quán)限的authenticator
繼承自Security.Authenticator
這里面需要重寫getUsername,如果返回null則驗(yàn)證失敗,返回username驗(yàn)證成功

這樣,我們?cè)谡?qǐng)求的前面加此注解,就可以進(jìn)行驗(yàn)證了
