0
我試圖用註解而不是部署描述符在Java中編寫示例REST服務。有條件地公開REST資源
@ApplicationPath("/services")
public class RestApp extends Application {
@Override
public Set<Class<?>> getClasses() {
final Set<Class<?>> classes = new HashSet<>();
classes.add(Request.class);
return classes;
}
}
的示例請求類
@Path("sequence-numbers")
public class Request {
@POST
@Produces(MediaType.APPLICATION_JSON + ";charset=utf-8")
@Consumes(MediaType.APPLICATION_JSON)
public Response createInstance(SnsConfig snsConfig, @Context final HttpServletResponse servletResponse,
@Context final HttpServletRequest servletRequest) {
}
}
如果classes.add(Request.class)從代碼的@Path( 「序列號」)不應該暴露除去。但即使我註釋掉classes.add語句,post方法在發送請求時也會受到影響。我對註釋的使用是錯誤的還是有其他可能導致此問題的內容?
編輯:我試着評論整個getClasses方法,仍然有效。我猜如果在@ApplicationPath下沒有指定任何類,那麼將掃描所有文件以查找@Path。我想使用getClasses的原因是檢查一些應用程序特定的條件,並決定添加或不添加類/ @ Path。有沒有辦法公開一個基於條件的REST資源?
是的,我正在返回一個空集,這就是問題所在。我發佈了對應於@ApplicationPath的類,而不是返回一個空集,它工作正常。 – kishore