2016-10-10 46 views
0

我有幾下端點「/ REST /角色/」無所謂「我怎麼使用REST容易

我怎麼趕例如錯誤的請求」趕上不好的URL請求休息/角色/ dbbhwbhb/wdwdwed

如果我使用:

@GET 
    @Path("/{param}") 
    @Produces(MediaType.TEXT_PLAIN) 
    public Response badURLS() { 
     return Response.ok().entity("bad url").build(); 
    } 

這捕獲靜止/角色/ dfsdfsds但其餘/角色/ sdsasd/asdad仍然沒有抓到。我如何設置一個方法,如果沒有我的終端點擊,然後返回默認消息?

+1

嗯,你的意思是404?我很確定JBoss會爲你處理。 – rmlan

+0

它爲完整的不正確的URL,但如果我的一個類有/角色路徑,然後一個方法有/ {ID}路徑然後角色/ 1將運行給定的方法,其中就像我使用角色/你好/那麼這不會被捕獲並引發異常 – robm

回答

0

JBoss的方法

RestEasy的方法

EDIT

正如我以前發給你的 - 第二個鏈接做的伎倆。

鑑於寫入這樣的方式映射器和結構:

package atata; 

import javax.ws.rs.NotFoundException; 
import javax.ws.rs.core.MediaType; 
import javax.ws.rs.core.Response; 
import javax.ws.rs.ext.ExceptionMapper; 
import javax.ws.rs.ext.Provider; 

@Provider 
public class _404Handler implements ExceptionMapper<NotFoundException> { 

    public Response toResponse(NotFoundException exception) { 
     return Response.status(500).entity(new ResponseEntity(333, "Got 404.")).type(MediaType.APPLICATION_JSON).build(); 
    } 

} 

配置

package atata; 

import java.util.HashSet; 
import java.util.Set; 

import javax.ws.rs.core.Application; 


public class EmployeeApplication extends Application { 

    private Set<Object> singletons = new HashSet<Object>(); 

    public EmployeeApplication() { 
     singletons.add(new MessageRestService()); 
     singletons.add(new _404Handler()); 
    } 

    @Override 
    public Set<Object> getSingletons() { 
     return singletons; 
    } 

} 

波姆:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>io.atata</groupId> 
    <artifactId>atata</artifactId> 
    <packaging>war</packaging> 
    <version>1.0</version> 
    <name>atata Maven Webapp</name> 
    <url>http://maven.apache.org</url> 
    <dependencies> 
     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>3.8.1</version> 
      <scope>test</scope> 
     </dependency> 
     <!-- https://mvnrepository.com/artifact/org.jboss.resteasy/resteasy-jaxrs --> 
     <dependency> 
      <groupId>org.jboss.resteasy</groupId> 
      <artifactId>resteasy-jaxrs</artifactId> 
      <version>3.0.19.Final</version> 
     </dependency> 
     <dependency> 
      <groupId>org.jboss.resteasy</groupId> 
      <artifactId>resteasy-servlet-initializer</artifactId> 
      <version>3.0.4.Final</version> 
     </dependency> 
     <dependency> 
      <groupId>org.jboss.resteasy</groupId> 
      <artifactId>resteasy-jackson-provider</artifactId> 
      <version>3.0.14.Final</version> 
     </dependency> 
    </dependencies> 
    <build> 
     <finalName>atata</finalName> 
    </build> 

端點:

包atata;

import javax.ws.rs.GET; 
import javax.ws.rs.Path; 
import javax.ws.rs.Produces; 
import javax.ws.rs.core.MediaType; 
import javax.ws.rs.core.Response; 

@Path("/roles") 
public class MessageRestService { 

    @GET 
    @Path("/1") 
    @Produces(MediaType.APPLICATION_JSON) 
    public Response badURLS() { 
     return Response.ok().entity("OK").build(); 
    } 

} 

你會得到

enter image description here

enter image description here

+0

我必須編寫自定義異常來捕獲404錯誤請求!多數民衆贊成這樣快速 – robm

+0

如果我想要返回一些東西給用戶,那麼該怎麼辦? 'invorrect url' – robm

+0

1)你在哪裏找到編寫自定義異常的義務?有關於ExceptionMapper的信息。請稍等一下,看看該文檔。 2)I updated the answer。 – cingulata