gpt4 book ai didi

rest - 使用 Post 以 REST 方式更新值

转载 作者:行者123 更新时间:2023-12-04 19:51:48 24 4
gpt4 key购买 nike

我是 REST 的新手,如果这是一个愚蠢的问题,请原谅我。

所以,我有一个客户资源。一个客户有很多信用。所以,我想获取客户积分的 URL 应该是

客户/21/积分

(其中 21 是客户 ID)

现在,如果我没有全部信用额度,我该如何添加信用额度?例如。一个客户有 10 个积分,我想加 5 个。据我所知,如果我使用邮寄,我会做类似的事情:

customer/21/credits?amount=15(这是否正确?)

但是,如果我只想添加到现有的学分中怎么办?那就是我想发送 5 个信用点并说将它们添加到客户当前拥有的任何东西中?我是否定义了一种虚拟资源,例如 addedCredits?

客户/21/addedCredits?amount=5

那么在幕后,我只是做了 credits += 5 吗?

最佳答案

您需要定义如何处理系统中的“积分”;重要的是您打算将它们定义为资源还是客户资源的属性。

在下面的示例中,我将使用 XML 来表示资源/实体。这可能对您有用,但您需要以某种一致的方式在请求和响应中表示您的资源 - 这将帮助您避免使用查询参数(例如 http://example.com ?foo=bar)定义属于请求正文的数据。

表示学分的几种方式:

  1. 如果“信用”是您的“客户”的属性:

    <customer id="21">
    <balance>10</balance><!-- aka credit -->
    </customer>

    那么您不妨 GET 客户,更新客户的信用/余额,然后 PUT <customer>返回/customer/21 .

  2. 如果“credit”是它自己的资源:

    您可以将以下内容发布到 /credit :

    <credit>
    <dateApplied>2009-10-15 15:00:00</dateApplied>
    <customer href="/customer/21"/>
    <amount>5</amount>
    </credit>

    或者您可以将以下内容发布到 /customer/21/credits (假设 URI 是应用于客户的所有 <credit> 的列表):

    <credit>
    <dateApplied>2009-10-15 15:00:00</dateApplied>
    <amount>5</amount>
    </credit>

    这将“附加”一个新的 <credit>到现有列表。并且还无需提供 <customer>在实体中,因为它已经存在于 URI 中。

关于rest - 使用 Post 以 REST 方式更新值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1574951/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com