我正在开发一个API包装器类,这是我做的第一个.在大多数情况下,它并不太难.达到我需要处理API返回的错误可能性的程度,但是我应该如何处理它们.
外部文件将调用API类,即,findVenueByLocationID($locationID);
此函数将构造API调用的URL和方法(POST,GET,DELETE等)并将其传递给名为makeCall的函数.
MakeCall构造完成的URL,将请求发送到服务并传回生成的XML.如果API返回错误,则它在返回的XML中.使用函数file_get_contents()调用URL.API具有一定数量的错误代码,它将在XML中返回.
据我了解,我应该在函数makeCall中执行以下操作:
这被认为是最好的做事方式吗?我应该在调用makeCall时添加try catch而不是在file_get_contents内部吗?我应该为XML返回的每个错误抛出异常并使用错误类处理它们吗?
我正在寻找的那种答案还应该包含一个资源的链接,该链接解释了一些围绕使用API包装器或类似事件进行错误处理的最佳实践.
提前感谢您的时间和回复.
编辑:与我们的CTO谈话后,当前版本的PHP错误是异常,我应该抛出异常并将异常处理留给调用者.请记住,我正在为API实现一个包装类.思考?
如何通过单击按钮选择一个标签,就好像它被点击一样?我用Google搜索并查看了所有操作,但只有这么多...... :(
有人知道吗?
提前致谢!
我有一个正在接收 JSON 消息的系统,其中包含来自文件静态分析的元数据。这些字段的名称是通过扫描动态生成的,可以是任何有效的字符串,但值始终是有效的字符串。
例如
{
"filename": "hello.txt",
...
"meta": {
"some file property": "any string",
"some other file property": "another string",
...
}
}
Run Code Online (Sandbox Code Playgroud)
在收到消息之前我无法知道元中的密钥是什么,也不知道会有多少个密钥。有没有一种方法可以在 JSONSchema 中捕获,只要它们的值始终是字符串,存在什么键并不重要?
我有许多对象(消息)需要根据JSON模式(draft-04)进行验证.每个对象都保证有一个"类型"字段,它描述了它的类型,但每个类型都有一组完全不同的其他字段,因此每种类型的对象都需要一个唯一的模式.
我看到了几种可能性,其中没有一种特别吸引人,但我希望我错过了一些东西.
可能性1:对每种消息类型使用oneOf.我想这会起作用,但问题是很长的验证错误以防出现问题:验证器倾向于报告每个失败的模式,其中包括"oneOf"数组中的所有元素.
{
"oneOf":
[
{
"type": "object",
"properties":
{
"t":
{
"type": "string",
"enum":
[
"message_type_1"
]
}
}
},
{
"type": "object",
"properties":
{
"t":
{
"type": "string",
"enum":
[
"message_type_2"
]
},
"some_other_property":
{
"type": "integer"
}
},
"required":
[
"some_other_property"
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
可能性2:嵌套"如果","然后","其他"三合会.我没有尝试过,但我想在这种情况下错误可能会更好.然而,写起来非常麻烦,因为嵌套如果堆积如山.
可能性3:针对"t"的每个可能值的单独方案.这是最简单的解决方案,但我不喜欢它,因为它阻止我在模式中使用公共元素(通过引用).
那么,这些是我唯一的选择,还是我能做得更好?
我想使用 JavaScript 中的 Ajv 根据 JSON 模式验证 JSON。我收到错误:
抛出新的 it.MissingRefError(it.baseId, $schema, $message); ^ 错误:无法从 id requestGetGraphs 解析引用 #/definitions/requestGraph
删除对其他架构的引用时: { "$ref" : "#/definitions/requestGraph" } 错误消失。
JavaScript 代码:
ajv.addSchema(require('./json-schema/graph-response'), 'graph-response.json');
ajv.validate('requestGetGraphs', `{"type" : "requestGetGraphs", "space" : "config", "v" : 1.1, "id" : "dsaf" }`);
Run Code Online (Sandbox Code Playgroud)
图请求.json:
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id" : "graph-requests.json",
"definitions": {
"requestGraph" : {
"$id" : "#/definitions/requestGraph",
"allOf" : [
{ "$ref" : "call.json/#/definitions/request" },
{
"properties": {
"space": {
"$id" : "#requestGraph/properties/space",
"type": "string",
"const": "config"
}
} …Run Code Online (Sandbox Code Playgroud) 我可能做错了,所以请善待。我正在开发一个 Java 游戏,我正处于测试角色移动/动画的阶段。
“人”可以在网格上左右上下移动。绘制网格的类是 gamePanel 类。按钮位于 gameControlPanel 类中。
我有一个按钮,可以在网格上生成一个人。然后我有一个按钮可以左右上下移动这个人。
当按下向上移动按钮时,它会从 person 类调用向上移动方法。(目前,我一次只测试一个“人”。)在该方法中是以下代码......
int move = 10;
while(move!=0)
{
setTopLeftPoint(new Point((int)getTopLeftPoint().getX(),
(int)getTopLeftPoint().getY() - 3));
try
{
Thread.sleep(300);
} catch (InterruptedException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
move-=1;
}
Run Code Online (Sandbox Code Playgroud)
问题是我似乎无法从 Person 类中调用 gamePanel 类的重绘方法。为了解决这个问题,我在 gamePanel 类中创建了一个计时器,它每 20 毫秒重绘一次。
当我在人生成后按下向上按钮时,该按钮保持按下状态,直到完成 while 循环的循环,然后人的圆形表示显示在上面的网格方块中。
我会尽力回答有关此的任何问题。
我一直在研究一个java模拟游戏(以我自己的方式重建主题医院).到目前为止,我已经完成了2d中的所有操作,使用正方形和圆形等.我已经找了一些关于如何在java中执行3d,找到可乐和代码的教程,但是我不确定这是否是我需要使用的.我的想法要么是要有简单的3d,就像在平面3d中一样.或真正的3D,这将是更多的工作,而且更加困难.我真的很想听到人们关于走3d的一般想法.这是几个月前我的进展视频(http://screenjel.ly/bdO7Rj8DVl8).2D图形相当不起眼.我想取得更多进展,但是我不知道如果我想最终进入3d,我是否应该继续在2d开发.
另外,我不知道3d有多难.理想情况下,我想要3D完全旋转.我知道这是相当雄心勃勃的,但我会满足于块状人和物品,而不是圆形和正方形.任何人都知道java教程中的任何好3d,其中包括旋转?
对此还有其他想法或意见吗?
谢谢
我正在尝试按照以下 avro 模式创建 JSON 字符串,用于十进制值。 https://avro.apache.org/docs/1.8.2/spec.html#Logical+Types
{
"name": "score",
"type": "bytes",
"logicalType": "decimal",
"precision": 10,
"scale": 5
}
Run Code Online (Sandbox Code Playgroud)
价值
"score":3.4,
Run Code Online (Sandbox Code Playgroud)
我得到了例外
Caused by: org.apache.avro.AvroTypeException: Expected bytes. Got VALUE_NUMBER_FLOAT.
Run Code Online (Sandbox Code Playgroud)
如果我给出“\u0000”而不是 3.4,那么它可以工作,但这是 0 的表示,我将如何获得 3.4 的表示?现在我正在创建硬编码的 JSON 字符串,但将来我必须将输出转换为十进制,我如何在 Scala 中做到这一点。
有没有办法将值转换为十进制逻辑格式?
我想保存object[]使用electron-storewith JSON Schema,在阅读我得到的文档后,JSON Schema代码可以成功执行,但有警告:
strict mode: "items" is 1-tuple, but minItems or maxItems/additionalItems are not specified or different at path "#/properties/todo"
Run Code Online (Sandbox Code Playgroud)
我的代码是:
strict mode: "items" is 1-tuple, but minItems or maxItems/additionalItems are not specified or different at path "#/properties/todo"
Run Code Online (Sandbox Code Playgroud)
我添加了minItems和maxItems,但警告仍然出现。我检查了几个小时但无法工作。谁能帮我?
顺便问一下我的使用方法是否JSON Schema正确?
您可以electron-store直接安装并执行它node ./xxx.js
谢谢你帮助我。
我只是在学习jsonschema。我不清楚items和之间有什么区别properties。有人可以解释一下吗?
jsonschema ×5
java ×3
javascript ×2
swing ×2
3d ×1
ajv ×1
animation ×1
api ×1
avro ×1
avro-tools ×1
electron ×1
event-bus ×1
frontend ×1
graphics ×1
jtabbedpane ×1
node.js ×1
php ×1
scala ×1
timer ×1