来自JavaScript的REST资源调用

来自JavaScript的REST资源调用,java,javascript,ajax,rest,backbone.js,Java,Javascript,Ajax,Rest,Backbone.js,我有一个web应用程序,其JS代码如下(使用Backbone.JS作为模型) 现在,有一个对Java(REST资源)的调用,我无法理解它到底是如何被调用的。Java代码(REST资源)如下所示: @Path("/list") public class StudentListResource extends BaseResource { @GET @Path("/student/demographic") @Consumes({MediaType.APPLICATION_JSON}) @Prod

我有一个web应用程序,其JS代码如下(使用Backbone.JS作为模型)

现在,有一个对Java(REST资源)的调用,我无法理解它到底是如何被调用的。Java代码(REST资源)如下所示:

@Path("/list")
public class StudentListResource extends BaseResource {

@GET
@Path("/student/demographic")
@Consumes({MediaType.APPLICATION_JSON})
@Produces({MediaType.APPLICATION_JSON})
@Override
public StudentDemographic getStudentDemographic(@QueryParam("StudentId") String StudentId) {
}

}
我的问题是,对api/list/student/demographic的JS调用与相应的Java方法之间的映射是怎样的。 这是由Java库内部处理的,还是我需要在项目中查找一些配置。 请帮我理解。我喜欢前端开发,所以不太清楚这种后端集成


另外,如果您能帮助我理解Java代码@GET、@PUT、@Override等中的行(比如它们是什么意思),那就太好了。

看起来像REST应用程序

映射由web应用程序容器(JavaEE/Spring/…)完成,具体配置可能会有所不同。 基本映射定义由@Path annotations完成(这里类StudentListResource处理前往/list的请求,具体方法getStudentDemographic然后处理“相对URL”/student/demographic,因此一起处理/list/student/demographic。这个URL是相对于web应用程序的,我假设它被称为“api”(或至少映射到/api/**)

@GET注释只是说它只处理HTTP GET请求,类似于@PUT、@POST等

@Consumes和@products指定输入和输出应为JSON,然后将JSON映射到Java对象,方法的输入取自query(@QueryParam)


@Override只是java语言注释,表示此方法是从超类重写的,但对映射没有特殊意义。

Thx有很多答案……我的项目使用EJB……因此我假设它是由EJB容器处理的……但是是否有一些类似配置的xml来定义此映射?什么类型的配置文件您在搜索吗?:)注释是如何将HTTP请求(基于URL和HTTP方法)映射到Java方法的方法。如果您想知道返回的Java对象是如何序列化为JSON的,可以直接将其转换为JSON(名为X的成员转换为名为X的JSON属性),也可以使用不同的注释。
@Path("/list")
public class StudentListResource extends BaseResource {

@GET
@Path("/student/demographic")
@Consumes({MediaType.APPLICATION_JSON})
@Produces({MediaType.APPLICATION_JSON})
@Override
public StudentDemographic getStudentDemographic(@QueryParam("StudentId") String StudentId) {
}

}