dev=# SELECT * FROM
price
WHERE
product_id = 1 AND price_list_id = 1 AND currency_code = 'GBP';
id | uuid | product_id | price_list_id | qty | currency_code | unit_price | created | modified
----+--------------------------------------+------------+---------------+-----+---------------+------------+----------------------------+----------------------------
1 | 6fcbbb5b-8e51-4a4c-bf63-270f5d3f1ff8 | 1 | 1 | 1 | GBP | 20417 | 2019-08-15 15:49:19.508808 | 2019-08-15 15:49:19.508808
16 | c044e9fe-bb5f-4996-b8e6-88b4a1b9f125 | 1 | 1 | 2 | GBP | 3453345 | 2019-08-15 15:49:37.896681 | 2019-08-15 15:49:37.896681
17 | c488d372-e58f-4441-a583-281e4c2b1310 | 1 | 1 | 3 | GBP | 312353345 | 2019-08-15 15:49:41.320622 | 2019-08-15 15:49:41.320622
[
{ id: "6fcbbb5b-8e51-4a4c-bf63-270f5d3f1ff8", "qty": 1, "unit_price": 20417 },
... etc // 3 items total
]
如果我想更新给定的一组价格(PRODUCT_ID
、Price List_ID
和Currency_code
),是否可以通过对我用于GET
的同一URI执行PUT
请求(即PUT/products/:PRODUCT_ID/prices/PRICE_List_ID=1&Currency_code=GBP
)来执行完全相反的操作?
在具有price_list_id=1
和currency_code=GBP
的get
请求的上下文中,类似于过滤器。在使用put
请求时,我不确定是否可以使用查询参数作为筛选器来标识用于更新的资源。
我考虑过的备选方案有:
将/products/:product_id/prices
放置在请求正文中,并将price_list_id
和currency_code
放置在请求正文中。例如{
"price_list_id": "<uuid>",
"currency_code": "GBP",
"data": [
{ "qty": 1, "unit_price": <newprice> },
... /* new set of prices */
]
}
从而删除所有现有价格,并用请求体中的价格替换该集合。
put/products/:product_id/prices/price-lists/:price_list_id
开始看起来很冗长。产品
有很多价格
所以资源的第一部分看起来可以嵌套为子资源。但是,prices
没有price-lists
(正好相反),因此将price-lists
作为价格的子资源是没有意义的。
put/prices/:price_id
。这意味着我必须首先检索一个列表,一个一个地删除它们,并单独更新价格。这不是一个好的解决办法,因为我想把价格作为一个集合来操作。我也希望这套被替换为一个整体或根本没有。
您发送PUT请求的url应该是您正在更新的东西的“标识”。因此,在请求体中包含用于定位资源的信息是没有意义的。
服务器“定位”正在更新的资源所需的所有信息都应该在资源定位器(即URL!)中
从HTTP协议的角度来看,所有这些都是完全没有问题的:
问题内容: 我们正在使用加载属性信息。我们的属性文件已经变得非常庞大,我们正在考虑将主属性文件分成几个子模块。有可能实现这一目标吗? 让我知道? 问题答案: 首先,我想知道为什么您选择了。给出问题的表达方式后,您似乎不必关心本地化/国际化或捆绑文件继承。 有了它,它就变得异常容易,因为它实现了反过来又提供了一种合并另一张地图的方法。开球示例: 如果您真的坚持使用,则最好的选择是创建一个自定义,在该
问题内容: 假设我在数据库中有一个表“ student”,它很大。学生中有几列,包括“ id”和“ class-id”。 在hbm文件中,我目前具有以下防御者代码: 在这种情况下,如果我更新学生持久性课程,则查询将类似于: 但是出于分区的原因,我还想在查询中包括class-id,例如: 我尝试了Composite-ID,但是发现Composite-ID中不允许使用生成器,因为Composite-I
我看不到任何关于何时应该使用查询或过滤器或两者结合的描述。他们之间有什么区别?谁能解释一下吗?
问题内容: 给定一个整数,如何使用Java检查它是否包含0? 如何才能做到这一点? 问题答案: 您是说小数表示形式是否包含0?绝对 最简单的 方法是: 别忘了一个数字并不“固有地”包含一个0或不包含0(当然,零本身除外)-它取决于底数。因此,十进制的“ 10”是十六进制的“ A”,而十六进制的“ 10”是十进制的“ 16”……在两种情况下,结果都会改变。 在整数的十进制表示形式中,可能有更有效的方
问题内容: 当使用SQL Object参数绑定时,JDBI是否可以与UUID参数一起使用? 我有这样的方法: 绑定到接收如下参数的SQL Server存储过程: 执行时,将抛出此异常: 如果我将JDBI上的参数类型更改为String,然后使用UUID对象中的toString()方法调用它,则它将起作用: 有没有办法编写我的DAO方法来接受UUID参数,并在绑定之前将它们转换为字符串? 问题答案:
valgrind快速启动页面提到: 这将我引向这样一个问题:是否有充分的理由不在生产中从程序中消除这样的错误?发布包含此类错误的程序有什么好处吗?如果有,开发人员如何保护它的安全,尽管据我所知,包含此类错误的程序可以不可预测地运行,并且无法对其行为做出一般假设?如果是这样,你能提供真实世界的例子,说明程序运行时有这些错误比没有错误更好吗?