0

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

var StudentDemographic = BaseModel.extend({
        idAttribute: 'studentId',
        url: 'api/list/student/demographic',
        urlRoot: 'api/list/student/demographic',
        defaults: {
                gender: null,
                age: null,
                dob: null,
        }
});

现在,有一个对 Java (REST resource) 的调用,我无法理解它是如何被准确调用的。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 等(比如它们的意思),那会很棒吗?

4

1 回答 1

0

看起来像 REST 应用程序。

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

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

@Consumes 和 @Produces 指定输入和输出预期为 JSON,然后映射到 Java 对象,方法的输入取自查询(@QueryParam)

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

于 2013-08-08T11:59:56.727 回答