PUT请求给出415不支持的媒体类型

时间:2016-11-15 18:57:02

标签: java rest postman

我是宁静网络服务的新手,到目前为止我所有的get和post请求都运行良好。我正在尝试使用PUT请求更新用户的帐户,但它给出了415错误。 我在网上查了一下,似乎它可能是一个简单的解决方案,但我似乎无法得到一个有效的方法。

我有一个Customer类,其中包含一些属性,但这里重要的是一个ArrayList of Accounts(称为'account')。

帐户有sortCode,accountNumber,(int)余额和accountId(长)

PUT请求如下所示:

@PUT
@Path("/{customerName}/account/{accountId}")
public Account updateAccountBalance(@PathParam("customerName") String customerName, @PathParam("accountId") int accountId, int amount) {
    return customerService.updateAccountBalance(customerService.getCustomer(customerName), accountId, amount);
}

它正在调用customerService.updateAccountBalance方法,该方法如下所示:

public Account updateAccountBalance(Customer customer, int accountId, int amount){
    customer.getAccountById(accountId).setBalance((customer.getAccountById(accountId).getBalance())+amount);
    customers.put(customer.getName(), customer);
    return customer.getAccountById(accountId);
}

该金额最初为String,但现在我已将其更改为int,因为需要由用户更新

我已经对Postman尝试了几种不同的调用:

{
"balance": 12
}

{
"accountNumber": "12345678",
"balance": 12,
"sortCode": "123456"
}

此处的目标是在现有帐户余额中添加12。 我正在使用的网址是http://localhost:8080/api/customer/test/account/

GET用于获取帐户,但我不确定为什么PUT不会

GET是:

@GET
@Path("/{customerName}/account/{accountId}")
public Account getCustomerIndividualAccount(@PathParam("customerName") String customerName, @PathParam("accountId") int accountId) {
    return customerService.getAccountById(customerService.getCustomer(customerName), accountId-1);
}

getAccountById看起来像这样:

public Account getAccountById(Customer customer, int accountId){
    return customer.getAccountById(accountId);       
}

并将返回此信息:

{
"accountId": 1,
"accountNumber": "12345678",
"balance": 1234,
"sortCode": "123456"
}

对不起,很长的帖子,但任何帮助将不胜感激。 另外需要注意的是,我在请求中将Content-Type作为application / json

如果您需要更多信息,请与我们联系。

0 个答案:

没有答案