我正在构建一个Angular 2应用程序,它使用服务来收集数据.该服务确实包含以下逻辑:
/* ========== CORE COMPONENTS ========== */
import { Injectable } from '@angular/core';
import { Http, Response } from '@angular/http';
import { Observable } from 'rxjs/Observable';
import 'rxjs/Rx';
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/catch';
/* ========== MODELS ========== */
import { IApplicationViewModel } from './models/application.model';
/* ========== CONSTANTS ========== */
import { LogzillaServerConfiguration } from '../../app.configuration';
@Injectable()
export class ApplicationService {
private getAllEndpoint = LogzillaServerConfiguration.host + '/api/administration/application/getAll';
// Initializes a new instance of the 'ApplicationService'.
constructor(private http: Http) { }
// …Run Code Online (Sandbox Code Playgroud) Bean Validation是验证对象的好选择,但是如何在ConstraintViolationException抛出时自定义REST API的响应(使用RESTeasy)?
例如:
@POST
@Path("company")
@Consumes("application/json")
public void saveCompany(@Valid Company company) {
...
}
Run Code Online (Sandbox Code Playgroud)
包含无效数据的请求将返回400具有以下正文的HTTP 状态代码:
[PARAMETER]
[saveCompany.arg0.name]
[{company.name.size}]
[a]
Run Code Online (Sandbox Code Playgroud)
这很好但不够,我想在JSON文档中规范化这些错误.
我该如何自定义此行为?
考虑这个属性
@JsonProperty
private Map<String, Object> myMap;
Run Code Online (Sandbox Code Playgroud)
当一个包含的java.util.Date值被序列化时,它不会被Date再次反序列化,因为类型信息不存在于Map<String, Object>. 我怎样才能绕过这个问题?我阅读了有关此问题的答案,这将是一个解决方法,但无法区分包含日期的字符串和在地图中序列化为字符串的日期。我可以告诉 Jackson 为每个映射值包含类型信息,以便 Jackson 可以正确反序列化它们吗?
我有一个哈希图,其 K、V 值为,我想将其拆分为两个子图。
HashMap<Long,JSONObject>
一种方法是我发现我们可以使用树形图并进行子映射。
TreeMap<Integer, Integer> sorted = new TreeMap<Integer, Integer>(bigMap);
SortedMap<Integer, Integer> zeroToFortyNine = sorted.subMap(0, 50);
SortedMap<Integer, Integer> fiftyToNinetyNine = sorted.subMap(50, 100);
Run Code Online (Sandbox Code Playgroud)
但问题是我没有获得 jsonObject 的 subMap,而我只想使用 HashMap 来实现。
谢谢
我正在将映像发布到我的服务器(Java和Spring)。
可能会发生几件事:
200图像ID。SaveFileException)。DatabaseException)更新新的图像记录。IOException。简而言之,我无法保存/创建图像。
我应该返回什么HTTP代码?
我是否应该根据返回多个代码和多个消息Exception?
我想将REST请求转发到另一台服务器。
我将JAX-RS与Jersey和Tomcat一起使用。我尝试通过设置See Other响应和添加Location标题来进行尝试,但这并不是真正的前进。
如果我使用:
request.getRequestDispatcher(url).forward(request, response);
Run Code Online (Sandbox Code Playgroud)
我得到:
java.lang.StackOverflowError:如果网址是相对路径java.lang.IllegalArgumentException:路径http://website.com不能以/字符开头(我认为转发仅在同一servlet上下文中是合法的)。如何转发请求?
我们要将 JAX-RS 实现从 Jersey 切换到 Apache CXF 3.0。我只是无法弄清楚基本身份验证是如何以 Apache CXF 方式完成的。我在 CXF 周围找到的所有示例WebClient,而不是 JAX-RS Client API。
这就是泽西岛的工作:
Client client = ClientBuilder.newClient();
client.register(HttpAuthenticationFeature.basic(config.getUsername(),config.getPassword()));
Run Code Online (Sandbox Code Playgroud)
如何使用 Apache CXF 做到这一点?
JPA 2.1引入了类型转换器.我找到了基于单个实体属性的转换器示例.
是否可以基于多个实体属性创建类型转换器?
有一些例子吗?
是否可以在运行时决定是否应同步或异步处理对资源端点的Jersey REST请求?我们举一个简单的例子.
同步版本:
@Path("resource")
public class Resource {
@GET
@Produces({MediaType.TEXT_PLAIN})
public Response get() {
return Response.ok("Hello there!").build();
}
}
Run Code Online (Sandbox Code Playgroud)
异步版本:
@Path("resource")
public class Resource {
@GET
@Produces({MediaType.TEXT_PLAIN})
public void get(@Suspended final AsyncResponse r) {
r.resume(Response.ok("Hello there!").build()); // usually called somewhere from another thread
}
}
Run Code Online (Sandbox Code Playgroud)
根据某些参数,我想在运行时决定是应该同步还是异步处理GET请求.http://server/resource在两种情况下,资源endpoint()的URL 必须相同.这可能吗?
当然,正如您在上面的示例中所看到的,同步版本可以通过简单调用以异步方式伪造AsyncResponse.resume(...).但是,我会避免创建异步响应的开销.
Java 8 引入了@Exported注释,其文档说明如下:
指示 JDK 特定类型或包是否是 JDK 的导出部分,适合在 JDK 实现本身之外使用。
什么是JDK的导出部分?我应该使用任何标有此类注释的类型吗?它被认为是安全的吗?
例如,此注释存在于com.sun.net.httpserver.HttpServer类中。