问题标签 [sitebricks]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1864 浏览

java - 是否有类型良好的 Scala(或 Java)库来使用 JSON Web API?

我想要一个简单的 Java(或 Scala)REST 客户端库,让我可以轻松地在 JSON REST API 上执行 GET/PUT/POST/DELETE 等操作,并以类型安全的方式将 JSON 响应反序列化为 Java 对象,例如

基本上我希望通用签名是这样的,get()例如 public <T> T get(String path, Class<T> responseClass),它将执行 GET 请求并将 JSON 响应反序列化为类型的 POJOresponseClass

我确实找到了一个与我想要的称为sitebricks的库非常接近,但它的范围受到严重限制,例如它不允许我执行更多不常见的 HTTP 动词,如 PUT/PATCH/DELETE 并且它无法设置标题或甚至是请求的正文。

我发现的另一个库有相反的问题——它无法进行基本身份验证,也不会为您将 JSON 序列化回对象。

0 投票
2 回答
643 浏览

sitebricks - 使用 Sitebricks 反序列化 post/get 参数

在 sitebricks 中,我可以在 Sitebricks@Service方法中轻松地从 json 格式的参数中反序列化一个类,如下所示:

但是如何从 get/post 参数反序列化一个类?

我知道该Request对象可以访问参数 ( request.params()),但它需要更多的努力。

0 投票
1 回答
1873 浏览

java - 如何使用 4xx/5xx 状态码 Java servlet/HttpURLConnection 处理 HTTP 响应

在我的 Java servlet 中,有些情况下我想返回一个表示错误的 HTTP 状态代码,并且我希望客户端能够根据返回的状态代码读取和处理响应。例如,我的应用程序处理 Google App Engine Java 运行时的Channel API。如果请求的客户端 ID 尚未请求通道的令牌,则 servlet 将返回403状态代码,客户端将相应地处理响应(立即从 servlet 请求令牌)。

但是,当客户端使用HttpURLConnection读取 HTTP 响应时。我无法从输入流中读取响应,而是抛出了这个可爱的堆栈跟踪:

当我写这篇文章的时候,我开始想,如果我从连接中读取一个表示不成功的状态码,也许我不应该从连接的输入流中读取。无论如何,我很想听听其他人对此的看法。


笔记

我的 servlet 使用Sitebricks为我的方法提供一个 REST 端点来监听。此外,Sitebricks 允许我发送响应和状态代码,如下所示:

0 投票
2 回答
554 浏览

google-app-engine - Sitebricks 和渠道存在服务 (GAE);正常的servlet也有问题

在我的 Java Google App Engine 服务器应用程序中,我想启用 Channel Presence servlet,以便使用 Channel API 跟踪与我的频道的连接/断开连接(如此处所述。我已经像描述的那样编辑了我的文件WEB-INF/appengine-web.xml

我的应用程序中的大多数 servlet 使用Sitebricks,而不是扩展 HttpServlet 的类,以便为我提供一种在我的应用程序中创建 REST 端点的简单方法。但是,似乎在我的课堂上使用 Sitebricks 不起作用,因为我WARNING: No file found for: /_ah/channel/connected/在点击 URL 时得到:

我有什么方法可以使用 Sitebricks 为 Channel Presence/-ah/channel/connected/和提供 REST URL 端点/_ah/channel/disconnected/吗?

奖金问题

假设 Sitebricks 不是要走的路,相反,我需要坚持extends HttpServlet使用通过WEB-INF/web.xml. 这个其他解决方案仍然对我不起作用。假设我要将它放入我的 web.xml 文件中:

在此示例中,com.example.PresenceServlet 是 HttpServlet 的子级,并覆盖了父级的 doPost(HttpServletRequest, HttpServletResponse) 方法。我仍然遇到问题:

非常感谢所有帮助。特别是来自谷歌员工。

PS:我使用的是GAE SDK 1.7.2,期待1.7.3的发布)


更新

我又尝试了一个实验。在<servlet>我的 servlet 类的 web.xml 标记中,我添加了这个标记以强制在服务器启动时加载我的 servlet(顺便说一下,mvn gae:run在我的示例中使用了该标记)。现在我得到这个输出

0 投票
2 回答
185 浏览

rest - 如何通过 JSON 将多个对象从 sitebricks 客户端发送到 sitebricks REST 服务?

是否可以同时从 sitebricks 客户端向 sitebricks 服务发送两个或多个对象?

例如,我有一个Person对象和一个JobApplication对象。我可以做这样的事情:

0 投票
3 回答
95 浏览

java - Sitebricks 的官方 javadoc (0.8.6)

我在哪里可以找到 Sitebricks 的官方 Javadoc(在我的例子中是 0.8.6 版)?Google 代码页Sitebricks.org上都没有任何内容。我能找到的最接近的东西是在 Jarvana(http://www.jarvana.com/jarvana/doc?search_type=javadoc_project&project=sitebricks)上,但这与我所寻找的相差甚远。我想使用谷歌官方的东西。

0 投票
2 回答
285 浏览

java - Sitebricks JSON 默认序列化程序。为什么它返回 text/json 而不是 application/json

嗯...我打算只问一个问题。但我决定用一块石头杀死两只鸟

第一个问题:Sitebricks 使用什么作为 Java POJO 和 JSON 之间的默认序列化器/反序列化器?例如,假设这是我的 POJO:

这是我的 Sitebricks servlet 中的一个方法示例:

我没有MyObject使用任何Jackson注释进行注释,也没有在代码中的任何地方使用GSON。然而,令我惊讶的是,我在回复中将其作为我的内容主体返回:

所以我想知道的是,Sitebricks 默认使用什么技术或框架来序列化-反序列化 JSON。杰克逊?格森?巫术和巫术?

现在是第二个问题。我在标题中注意到响应Content-Typetext/json. 这对我来说看起来很奇怪,因为在我过去的经验中,我一直将application/jsonJSON 作为 Content-Type 来处理。这篇Stackoverflow 帖子证实了我的信念。对此有何评论?

提前致谢!

0 投票
2 回答
256 浏览

java - 使用 Sitebricks 发送一致的 JSON 响应以报告异常

我正在开发一个 web 应用程序,它通过Google Sitebricks提供许多 REST 端点。为了最大程度地减少重复/类似代码,我想将 sitebricks 配置为每次在 REST 端点中执行的代码引发异常时都使用一致的回复对象进行响应。

而不是处理异常并在每个端点中创建自定义 JSON 响应,我希望 sitebricks 本身捕获异常并返回如下内容:

然后 Sitebricks 将负责创建上述结构并填写状态代码和其他字段,例如基于注释。

  • 我必须自己构建这个还是其他人已经这样做了?也许甚至有办法用 Sitebricks 本身做到这一点?
  • 是否有等效于Jersey 的 ExceptionMapper 接口
0 投票
1 回答
218 浏览

java - Sitebricks 是否与 GAE 后端 (Java) 兼容

我想知道是否可以使用 Sitebricks 托管 Google App Engine 后端 servlet。我试图在我的 GAE Java 应用程序中这样做——前端使用 GAE 的BackendService接口获取后端 URL 并发送 HTTP 请求——但 HTTP 响应总是返回404 Not Found)。

我很想发布一些源代码/配置文件,但我觉得最好解释一下我在做什么。基本上,我的 servlet 已使用 Sitebricks 以与我的前端 servlet 完全相同的方式进行配置,这些 servlet 运行良好(即,在 servlet 类和方法中使用@Service,@At和注释,并在我的应用程序的全局 Guice实例中进行配置)。我正在使用一个动态后端实例,在backends.xml中正确配置。@GetSitebricksModuleInjector

有人对将SitebricksGAE 后端配对有任何提示吗?

0 投票
1 回答
935 浏览

google-app-engine - 在 Java GAE 后端 Servlet 中使用 Guice 注入

我在我的 GAE Java 应用程序中遇到了一个难题:我正在尝试编写一个将由 GAE 后端处理的 servlet,它还必须使用Guice 依赖注入来启动所有 servlet 的字段。我尝试了多种方法,但似乎没有一个对我有用。

我首先尝试在 servlet 中使用Sitebricks,但似乎这样做会导致 GAE 在查询后端 URL 时无法将该类检测为合法 servlet:始终从后端返回404 Not Found 。尽管如此,我确信该类已使用 Sitebricks 注释正确注释,因为相同的 URI 路径适用于前端实例。

接下来,我尝试使用Guice Servlet Extension(请参阅此链接);在我创建全局的类中Injector,我使用了这个绑定:

不幸的是,发生了与 Sitebricks 完全相同的问题:我在后端返回 404 错误,但在前端没有。

最后一种可行的方法是在 中配置 servlet-mapping web.xml。传统的方法。这最终允许我的后端检测 URI 映射(这与Google 的 Java GAE 后端文档中所写的内容一起出现:“后端与主应用程序版本共享 web.xml 中定义的 servlet。”)。不幸的是,我无法使用此过程利用 Guice 注入,因此我非常不希望使用web.xml.

我什至尝试结合第二种和第三种方法:同时使用 Guice Servlet Extension 和 web.xml。这导致从后端返回 500 错误并出现以下错误:

最后要注意的一件事:我将backends.xml文件配置为 have <public>true</public>,但我正在通过从 GAE 应用程序的前端查询后端来测试这些 HTTP 请求调用。另外,请注意,我的前端实例正在使用BackendService此处为 javadoc)正确检索后端地址。

我之前问过的其他相关 Stackoverflow 问题