我是宁静网络服务的新手,到目前为止我所有的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
如果您需要更多信息,请与我们联系。