当前位置: 首页 > 知识库问答 >
问题:

当找不到REST资源时返回404是否正确?

闽念
2023-03-14
@Path("/foos")
public class MyRestlet
        extends BaseRestlet
{

    @GET
    @Path("/{fooId}")
    @Produces(MediaType.APPLICATION_XML)
    public Response getFoo(@PathParam("fooId") final String fooId)
            throws IOException, ParseException
    {
        final Foo foo = fooService.getFoo(fooId);

        if (foo != null)
        {
            return Response.status(Response.Status.OK).entity(foo).build();
        }
        else
        {
            return Response.status(Response.Status.NOT_FOUND).build();
        }
    }

}

共有1个答案

许马鲁
2023-03-14

在这种情况下,404响应是非常典型的,API用户很容易使用。

一个问题是,由于没有找到特定的实体,或者由于URI中的结构问题,客户端很难判断他们是否得到了404。在您的示例中,/foos/5可能返回404,因为ID=5的foo不存在。但是,/food/1将返回404,即使存在ID=1的foo(因为foos拼写错误)。换句话说,404意味着一个构造不良的URI或对不存在的资源的引用。

当您有一个引用多个资源的URI时,会出现另一个问题。通过一个简单的404响应,客户机不知道哪个引用的资源没有找到。

 类似资料:
  • 我得到了一个工作Spring靴Rest服务。当路径错误时,它不会返回任何东西。一点反应都没有。同时它也不会抛出错误。理想情况下,我希望出现404 not found错误。 ResponseEntityExceptionHandler中有此方法 我已在属性中标记 要将404 not found响应抛回客户端,我还必须为此服务执行什么操作

  • 我用Spring 4和Spring security设置了一个简单的REST API web.xml AccountController.java mysabisabi-servlet.xml mysabisabi-security.xml 应用程序上下文.xml 日志文件 当我尝试访问 我得到 我已经尝试了 和作为url模式,但仍然相同。 有人能指出我错过了什么吗? 谢了。

  • http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd“> 我不明白该如何解决这件事,请帮帮我

  • 起初,在我的web服务器中,我只有一个REST servlet。类似于: 和web.xml: 但是后来我想向服务器添加一些静态html,所以我将servlet映射更新为/rest/* 控制器servlet类的@path指令从“/”到“/rest”。一切都很好,但是controller的子资源或方法与@path指令停止工作…IE: null 我使用了trace util,得到了以下结果: 对于/[a

  • 我有一个xamarin应用程序,可以从webAPI中提取数据。我多次检查api地址,我确信它是正确的。当我调试代码时,服务器上出现404 not found错误。然而,当我将URL复制并粘贴到浏览器时,我得到了预期的结果。我不明白为什么我的应用程序返回404。 我的方法: 我的桥接方法到HttpClient的PostAsync方法: 代币:正确 API URL:正确(我从调试输出中检查“/”符号。

  • 试图从开源android应用程序构建签名apk,但链接出错https://jcenter.bintray.com/com/android/tools/lint/lint-gradle/26.1.3/lint-gradle-26.1.3.pom无法访问 我尝试手动将此链接放到我的浏览器中,并在重定向到https://repo.jfrog.org/artifactory/libs-release-bi