JAX-RS接口调用404问题:正确的Postman请求URL是什么?
问题解答
404原因排查与正确URL说明
从你给出的JAX-RS接口和实现代码来看,接口的@Path("/students")加上方法的@Path("/try"),按理说组合后的路径是/students/try,但调用返回404,常见原因和正确URL的调整方式如下:
- 缺少应用上下文路径:如果你的Web应用部署时设置了上下文路径(比如应用叫
student-service),完整URL得加上这个路径,也就是:http://localhost:8080/student-service/students/try - 资源类未被正确扫描注册:要是项目没配置好JAX-RS的资源扫描(比如没在
web.xml里指定应用类,或者注解配置没开扫描),接口根本不会被识别。得先确保资源类被正确注册,之后再用http://localhost:8080/students/try(无上下文路径时)调用 - 路径斜杠的兼容问题:虽然代码里的斜杠写法合法,但有些JAX-RS实现对开头斜杠敏感。可以试试把方法上的
@Path("/try")改成@Path("try"),组合路径还是/students/try,部分容器可能需要这么写才能识别
你的代码参考
接口定义:
import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; @Path("/students") @Produces(MediaType.APPLICATION_JSON) public interface AddExampleResource { @Path("/try") @GET Response getById(); }
实现类:
import javax.ws.rs.core.Response; public class AddExampleImplementation implements AddExampleResource { @Override public Response getById() { return Response.ok("student1").build(); } }
总结
最常出现的问题是忘了加应用上下文路径,先确认你部署Web应用时的上下文路径,把它加到URL开头就行。如果没有上下文路径,就检查JAX-RS的配置是否正确注册了资源类,之后再尝试调用http://localhost:8080/students/try。
内容的提问来源于stack exchange,提问作者some0neninja
相关产品推荐
相关产品推荐

