- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有两个问题:
问题 1:
当用户没有为 POST api 调用之一发送任何请求负载时。其对应的RestController方法,处理传入的请求并抛出空指针异常。它发送回 HTTP 500 错误代码和堆栈跟踪作为错误描述。
预计此处返回 HTTP 405。
@POST
@Path("/create")
@Consumes({ MediaType.APPLICATION_JSON })
@Produces({ MediaType.APPLICATION_JSON })
public Response createEntity(MyEntity entity)
{
EntityRequest req = new EntityRequest();
req.setName(entity.getName());//throws NPE here
//few more lines to send req to backend and get the response back
return response;
}
问题2:
有GET
请求API实现。
@GET
@Path("/entity/{entityId}")
@Consumes({ MediaType.APPLICATION_JSON })
@Produces({ MediaType.APPLICATION_JSON})
public Response findMyEntityById(
@PathParam("entityId") String id)
{
EntityRequest req = new EntityRequest();
//similar stuff and sends the response back
return response;
}
问题是用户是否点击 http://localhost:8080/entities/entity/12
并发送 POST
请求而不是 GET
。 API 应该抛出 405,但现在抛出 500。实际堆栈跟踪:
javax.ws.rs.WebApplicationException: com.sun.jersey.api.MessageException
and MIME media type application/octet-stream was not found
最佳答案
第一种情况很清楚。 405 表示“方法不允许”。如果特定的 URL 无法回复当前方法的请求,通常由容器或框架抛出。但是您确实使用了正确的方法,但主体为空,这会导致代码中出现 NPE。在本例中,预计状态为 500。
问题2不清楚。您应该发送更多详细信息。您要么不发送 POST,要么该 URL 可以接受 POST。请仔细检查并发送有关您的配置、一些代码片段等的详细信息。
编辑:
发布一些代码后我可以说 GET 请求不能消耗任何东西。从 findMyEntityById()
中删除 @Consumes({ MediaType.APPLICATION_JSON })。尝试一下。如果它有帮助,你可以说这是 Jersey 中的一种错误:它实际上应该在部署期间抛出 GET 无法消耗任何内容的异常,或者忽略 @Consume
if GET
方法已处理。
关于java - 安心服务: Sending HTTP 405 instead of HTTP 500 error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25040222/
我正在开发 Restful 服务,我们将在数据库中插入/更新新记录。 由于REST使用HTTP进行通信,而HTTP并不可靠,我担心如果连接失败,请求可能无法发送到服务器。 我在 link 中找到的建议
这是我对 GET 端点的restAssure 调用: public static Response getCall(int expectedStatusCode){ return given(
我是一名优秀的程序员,十分优秀!