我收到一个错误,无论我尝试什么似乎都无法修复。在我眼里一切看起来都是正确的。这是我为端点提供的服务
@PUT
@Path("/{bookId}")
public Response editBook(@PathParam("bookId") Long bookId, Book newBook) {
if (!JWTTokenAuth.validateJwtToken(JWTTokenAuth.extractTokenFromHeaders(headers))) {
return Response.status(Response.Status.UNAUTHORIZED).build();
}
Book book = bookDao.getBookById(bookId);
if (book == null) {
return Response.status(Response.Status.NOT_FOUND).build();
}
book.setTitle(newBook.getTitle());
bookDao.updateBook(book);
return Response.ok().build();
}
这就是我的实体
@Entity
@Getter
@Setter
public class Book {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String title;
private String author;
@OneToMany(mappedBy = "book")
private List<Review> reviews;
}
当我尝试通过邮递员到达端点时(例如)http://localhost:8080/api/books/2
正确设置授权并将我的 JSON 有效负载设置为这样
{
"title": "defgefgege"
}
我收到此错误,我认为它与 PathParam 有关? 无法从对象值(标记
java.lang.Long
)反序列化类型 JsonToken.START_OBJECT
的值
[来源:(io.undertow.servlet.spec.ServletInputStreamImpl);行:1,列:1
]
我怀疑问题不在你的Java代码中,而在PostMan中。您是否在 URL 中输错了参数或者忘记设置了?
我的猜测是 PostMan 没有发送此 URL:
http://localhost:8080/api/books/2
但是
http://localhost:8080/api/books/{bookID}
这可以解释您看到的错误消息。