sme*_*eeb 8 java url jax-rs jersey
说我希望我的JAX-RS/Jersey应用程序公开以下URL:
http://myapp.example.com/app/fizz
http://myapp.example.com/app/buzz
http://myapp.example.com/app/foo
http://myapp.example.com/app/bar
Run Code Online (Sandbox Code Playgroud)
假设我想/app成为父基础资源,并/app/*成为"子"资源.以下是否会完成我正在寻找的URL策略(?):
@Path('/app')
@Produces(MediaType.APPLICATION_JSON)
public abstract class AppResource {
// Whatever...
}
@Path('/fizz') // <--- right here, will FizzResource live at /app/fizz?
@Produces(MediaType.APPLICATION_JSON)
public class FizzResource extends AppResource {
// Whatever...
}
Run Code Online (Sandbox Code Playgroud)
将FizzResource在暴露/app/fizz或只/fizz?
cas*_*lin 17
FizzResource将暴露在/app/fizz.
引用JSR 339(关于注释继承的第3.6节):
如果子类或实现方法具有任何 JAX-RS注释,则 忽略超类或接口方法上的所有注释.
该规范还指出:
为了与其他Java EE规范保持一致,建议始终重复注释,而不是依赖注释继承.
在JAX-RS /泽西文档介绍了如何创建子资源:
/fizz可以在类上使用,这样的类称为根资源类.
FizzResource也可以用于根资源类的方法.这使得许多资源的通用功能可以组合在一起并可能被重用.第一种方式
/fizz可以用于资源方法,这种方法称为子资源方法.
因此,请执行以下操作来创建子资源:
@Path("/app")
public class YourHandler {
@Produces(MediaType.APPLICATION_JSON)
public String yourHandlerForApp() {
// This method is be exposed at /app
}
@Path("/fizz")
@Produces(MediaType.APPLICATION_JSON)
public String yourHandlerForAppSlashFizz() {
// This method is be exposed at /app/fizz
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4286 次 |
| 最近记录: |