我正在学习使用Dropwizard.我能够遵循快速入门指南并运行基本的REST API.
在本文档中,有一个名为"组织项目"的部分.
它建议按以下部分组织项目:project-api,project-client,project-service.
这是我的问题/疑问:
一般来说,请解释'api','service'和'client'之间的区别.
是否有一个例子严格遵循上述惯例使用dropwizard?
"...项目客户端应该使用这些类和HTTP客户端为您的服务实现一个成熟的客户端" - 因为"项目服务"将具有REST API,那么为什么我们需要使用HTTP客户端?
谢谢!
编辑:我已经尝试过评论中提供的解决方案,但它们不起作用。添加原始标头是可行的,但我试图避免这样做。
我面临着一个奇怪的情况。我有一个受基本身份验证保护的资源,我可以通过浏览器、Postman 和curl 轻松查询该资源。但在 Java 中,我无法查询它并收到 403 禁止错误。我按照下面的例子:
CredentialsProvider provider = new BasicCredentialsProvider();
UsernamePasswordCredentials credentials = new UsernamePasswordCredentials("username", "password");
provider.setCredentials(AuthScope.ANY, credentials);
CloseableHttpClient client = HttpClientBuilder.create().setDefaultCredentialsProvider(provider).build();
HttpResponse response = client.execute(new HttpGet("https://hostname.com/api/detail?query=xx"));
int statusCode = response.getStatusLine().getStatusCode();
System.out.println(statusCode); // prints 403 forbidden
Run Code Online (Sandbox Code Playgroud)
当我检查调试器中的对象时,我注意到 HttpGet 对象的标头为空。也就是说,它没有传递带有“Basic asdflkhjWskjhakljhasdfkasdflkjh=”值的“Authorization”标头。
因此,我手动添加了具有正确值的标头并且它起作用了(状态 200 OK)。
有人可以帮我弄清楚为什么会发生这种情况以及如何使用 HttpClient API 设置正确的标头而不是手动添加标头?
这是我的依赖:
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.3</version>
Run Code Online (Sandbox Code Playgroud) 我正在尝试在我的网页上实现浏览器支持功能.对于Firefox 3.6,它工作正常,但由于某种原因IE 8的userAgent返回错误的值.
这是场景,当我在IE8上运行"本地"javascript代码时,navigator.userAgent返回正确的信息(MSIE 8.0).但是当我在服务器上运行此脚本时,它会在IE 8浏览器上返回MSIE 7.0.
有任何想法吗?
我无法将.innerHtml替换为嵌套在其他div标签中的div标签.我用firebug来确保getElementById()正常工作.
<div class="a">
<div class="b"><a href="myUrl"><div id="hello"></div></a></div>
</div>
Run Code Online (Sandbox Code Playgroud)
在我使用的javascript代码中:
document.getElementById("hello").innerHTML = "hello world";
Run Code Online (Sandbox Code Playgroud)
使用firebug,我已经验证了"hello"div被拾取(也就是说,它不是null).但字符串"你好世界"没有出现.请帮助.谢谢.
html ×2
java ×2
javascript ×2
dropwizard ×1
http ×1
innerhtml ×1
navigator ×1
rest ×1
user-agent ×1