我正在和Spring學習REST。我正在使用Maven來處理項目依賴關係。傑克遜版本不兼容?
我使用Spring 3.2.1和Jackson來調用GET
和POST
。當我使用傑克遜版本1.5.6時,GET
工作得很好,我可以看到我的對象的Json
版本從GET
調用中返回。然而,當我升級到最新版本的傑克遜就不再工作,我得到以下的響應返回...
該請求所標識的資源只能與不接受的特性產生響應的根據請求「接受」頭()。
審查其他問題StackOverflow上似乎有與傑克遜映射和Core版本的問題,但我可以找到自己的項目傑克遜沒有其他的引用,所以我不認爲這是問題所在。
應用程序上下文包含以下...
<mvc:annotation-driven/>
<context:component-scan base-package="im.poz.springrestserver" />
,並在控制器中調用的方法如下:...
@RequestMapping(value = "/clients/{clientid}", method= RequestMethod.GET, produces = {MediaType.APPLICATION_JSON_VALUE, MediaType.APPLICATION_XML_VALUE})
@ResponseBody
public Client getClient(@PathVariable("clientid") int clientId) throws llegalArgumentException {
Client client=services.retrieveClientById(clientId);
return client;
}
@RequestMapping(value = "/clients", method= RequestMethod.POST, produces = {MediaType.APPLICATION_JSON_VALUE, MediaType.APPLICATION_XML_VALUE})
@ResponseBody
public Client updateClient(@RequestBody Client client) throws IllegalArgumentException {
client=services.updateClient(client);
return client;
}
你能加入一些代碼嗎?核心和映射器是否使用相同的發行版本? – Perception 2013-02-19 11:17:33
是的,相同的版本。 Maven似乎處理這個罰款,我已經檢查。 – Vicki 2013-02-19 11:31:41
您沒有包含有問題的POST請求。但是,看來你的服務方法接受多種媒體類型。您在發送請求之前是否在客戶端選擇了其中一種媒體類型? – Perception 2013-02-19 11:35:15