Hasor 請(qǐng)求并返回JSON

2018-10-09 11:04 更新

將請(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é)果。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)