我正在使用Jackson解析JSON流.
我正在使用的API是 ObjectMapper.readTree(..)
考虑以下流:
{
"type": "array",
"items": {
"id": "http://example.com/item-schema",
"type": "object",
"additionalProperties": {"$ref": "#"}
}
}
Run Code Online (Sandbox Code Playgroud)
现在,当我阅读additionalProperties时,我发现这里定义了一个"$ ref".现在要解析引用,我需要转到它的父节点并找出id(解析基础架构).
我找不到任何API去JsonNode的父级持有additionalProperties.有没有办法实现这个目标?
信息:
为什么我需要这个是我需要找到必须解析$ ref的基本模式.要弄清楚基础架构,我需要知道其父级的ID.
我在Tomcat中有一个webapp,它通过Apache Olingo公开OData端点.我在网上搜索了诸如swagger,olingo,integration等关键字但没有找到任何答案.
有一些关于.NET OData Swagger集成的信息,但我并不感兴趣.
请注意,我对Olingo和Swagger集成感兴趣,而不是Swaggersocket集成.
有谁知道Swagger是否支持Olingo集成?
编辑:Swagger UI是否与Olingo集成无缝协作?
public enum Operations {
SINGLE,
MULTIPLE;
private Type operation;
public void setOperation(Type operation) {
this.operation = operation;
}
public Type getOperation() {
return operation;
}
public static void main(String[] args) {
Operations oper1 = Operations.SINGLE;
oper1.setOperation(Type.GET);
Operations oper2 = Operations.SINGLE;
oper2.setOperation(Type.POST);
System.out.println(oper1.getOperation());
System.out.println(oper2.getOperation());
}
}
enum Type {
POST,
GET;
}
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,两个操作的操作值都会发生变化.如何使用不同操作类型的两个Operations.SINGLE实例?
我有一个服务,可以根据Content-Type标头有两种不同类型的主体参数。
例如对于路径/Pet:
如果Content-Type: application/somecustom.resource+json使用,则POST可以作为Petbody参数。
如果Content-Type: application/somecustom.function+json使用,则 POST 应该采用一些不同的主体参数来调用函数并返回不同的响应。
关于如何在 OpenAPI (Swagger) 中体现这一点有什么建议吗?
对于实际使用的Java8示例:: https://github.com/java8/Java8InAction/blob/master/src/main/java/lambdasinaction/chap1/FilteringApples.java
public static boolean isGreenApple(Apple apple),
public static boolean isHeavyApple(Apple apple) {
Run Code Online (Sandbox Code Playgroud)
我想添加类似的方法,例如
public static boolean isAppleOfColor(Apple apple, String color)
Run Code Online (Sandbox Code Playgroud)
我想使用相同的模式访问它:
List<Apple> colorApples = filterApples(inventory, FilteringApples::isAppleOfColor("red"));
Run Code Online (Sandbox Code Playgroud)
但是我不能在FilteringApples :: isAppleOfColor(“ red”)中传递参数。
到目前为止,我已经使用以下方法实现了这一点:
public static Predicate<Apple> colourMatches( String color) {
return p->color.equals(p.getColor());
}
Run Code Online (Sandbox Code Playgroud)
然后打电话
List<Apple> colorApples = filterApples(inventory, (Apple a)->a.colourMatchesOnApple("red"));
System.out.println(colorApples);
Run Code Online (Sandbox Code Playgroud)
这可行。但是有没有办法我可以使用“引用的”参数化方法,例如FilteringApples::isAppleOfColor("red").
谢谢
编辑
谢谢,我刚刚在JLS 15.13中意识到:https : //docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.13 如下文本:
无法指定要匹配的特定签名,例如Arrays :: sort(int [])。而是,功能接口提供了用作过载解析算法(第15.12.2节)的输入的参数类型。这应该满足绝大多数用例;当极少数需要进行更精确的控制时,可以使用lambda表达式。
我有一个长时间运行的 servlet,如果发生超时,我想中止该过程。(长时间运行的 servlet 是另一个讨论)。
现在,当我在服务器上中止请求时,我应该发送 HTTP 408 或 HTTP 503 或其他一些适当的状态。
408 似乎更像是客户端错误,而 503 更像是过载/维护状态。并且找不到合适的响应状态。