英文:
Why can't i access JAX-RS api?
问题
以下是翻译好的内容:
我从一家公司得到了一个任务,他们给我发送了一个已经设置好一切的虚拟机。任务是我必须创建一个API,从数据库中检索个人详细信息并显示出来。
问题是,当我运行这个应用程序时,服务器返回一个包含“hello world”文本的index.html。然而,当我尝试更改index.html时,在浏览器中并没有发生变化,但是当我通过Postman进行请求时,我得到了“已更新”的index.html。
我还意识到我无法访问我创建的API,以检查是否首先可以访问API。
index.html返回的路径是“http://hocalhost:8080/tutorial-applicans/”。
我的服务是PersonService.java:
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
@Stateless
@Path("person")
public class PersonService {
@PersistenceContext(unitName = "de.erknrw_tutorial-applicants_pu")
private EntityManager em;
@GET
@Path("hello")
@Produces(MediaType.TEXT_PLAIN)
public String sayHello() {
return "Hello World!!!";
}
}
我正在尝试获取“Hello World!!!”,但我的路径是错误的,我尝试过“http://hocalhost:8080/tutorial-applicans/person/hello”。
也许值得一提的是还有一个JAXRSConfiguration.java文件:
import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;
@ApplicationPath(JAXRSConfiguration.RESTROOT)
public class JAXRSConfiguration extends Application {
public static final String RESTROOT = "webresources";
}
如何访问sayHello()方法?路径是什么样的?
提前谢谢你。
英文:
I have a task from a company, that send me a virtual machine with everything set up. The task is that i have to create an API to retrieve Person details from the database and display it.
The problem is that when i run the application, the server returns an index.html with hello world text in it. However, when i try to change the index.html, it does not change in the browser, but when i do request through postman, i get the "updated" index.html.
What i also realised that i cannot access the API that i have created, to check if i can access APIs in the first place.
The path where the index.html returns is "http://hocalhost:8080/tutorial-applicans/"
My Service is PersonService.java:
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
@Stateless
@Path("person")
public class PersonService{
@PersistenceContext(unitName = "de.erknrw_tutorial-applicants_pu")
private EntityManager em;
@GET
@Path("hello")
@Produces(MediaType.TEXT_PLAIN)
public String sayHello(){
return "Hello World!!!"
}
}
I am trying to get "Hello World!!!", but my path is wrong, when i tried "http://hocalhost:8080/tutorial-applicans/person/hello".
Might be worth mentioning that there is also a JAXRSConfiguration.java file:
import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Applications;
@ApplicationPath(JAXRSConfiguration.RESTROOT)
public class JAXRSConfiguration extends Application{
public static final String RESTROOT = "webresources";
}
How do access the sayHello()? How does the path look like?
Thanks in advance
答案1
得分: 1
在部署到 Web 应用时,JAX-RS 应用程序被配置为一个 Servlet。因此,在资源路径之前,您必须添加应用程序路径。
端点将是:
http://[服务器]:[端口]/[上下文路径]/[应用程序路径]/[资源路径]/[操作路径]
在您的情况下:
http://hocalhost:8080/tutorial-applicans/webresources/person/hello
英文:
When deploying on a webapp, the JAX-RS application is configured as a Servlet. So, you have to add the application path prior to the path of the resource.
The endpoint would be:
http://[server]:[port]/[context path]/[application path]/[resource path]/[operation path]
In your case:
http://hocalhost:8080/tutorial-applicans/webresources/person/hello
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论