W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
將請(qǐng)求的處理結(jié)果作為 JSON 響應(yīng)給客戶端。
在 Hasor 中響應(yīng)一個(gè) JSON 字符串給瀏覽器非常簡(jiǎn)單,首先我們的請(qǐng)求處理器只需要將要作為 JSON 進(jìn)行響應(yīng)的數(shù)據(jù)在請(qǐng)求處理方法上以返回值形式 return 即可以,剩下的就交給渲染器。下面是請(qǐng)求處理的例子:
@MappingTo("/helloAcrion.json")
public class HelloAcrion extends WebController {
public Object execute(RenderInvoker invoker) {
return ...
}
}
一般情況下請(qǐng)求一個(gè) json 資源我們習(xí)慣用 .json
作為資源的后綴。如果您使用的是 restful 風(fēng)格的路徑,您可能還需要通過(guò) @Produces 注解來(lái)指定響應(yīng)的格式。如下:
@MappingTo("/user/info/${userID}")
public class HelloAcrion extends WebController {
@Produces("json")
public Object execute(RenderInvoker invoker) {
return ...
}
}
配置 JSON 渲染器,Hasor 內(nèi)置的 JSON 渲染器。會(huì)自動(dòng)感知當(dāng)前項(xiàng)目中可以使用的 JSON 序列化庫(kù),默認(rèn)情況下,JsonRender會(huì)自動(dòng)按照下面順序嘗試尋找可以使用的 JSON 庫(kù):fastjson、Gson、Json-lib。如果您沒(méi)有引入任何一個(gè) json 庫(kù)那么會(huì)有一個(gè) ClassNotFoundException 異常。
Hasor 的 JSON 渲染器還允許您跳過(guò) Hasor 內(nèi)置 JSON 渲染庫(kù)的查找規(guī)則,直接使用您指定的渲染方式。您可以通過(guò)這種方式實(shí)現(xiàn)自定義 JSON 渲染,使用方式如下:
// JSON 渲染引擎
public class UserJsonRenderEngine implements JsonRenderEngine {
@Override
public void writerJson(Object renderData, Writer writerTo) throws Throwable {
//將 renderData 數(shù)據(jù)序列化到 writerTo 中
}
}
// 注冊(cè) JSON 渲染引擎
public class StartModule extends WebModule {
@Override
public void loadModule(WebApiBinder apiBinder) throws Throwable {
// - 設(shè)置 JSON 渲染器
apiBinder.suffix("json").bind(JsonRender.class); //設(shè)置 JSON 渲染器
// - 使用自定義 JSON 序列化引擎(可選)
apiBinder.bind(JsonRenderEngine.class).to(UserJsonRenderEngine.class);
}
}
當(dāng)上面這一切都做好之后,您只需要訪問(wèn)一下您的請(qǐng)求處理器即可得到結(jié)果。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: