Database RESTAPI应该如何使用服务器';什么时候约会?

Database RESTAPI应该如何使用服务器';什么时候约会?,database,rest,datetime,server,Database,Rest,Datetime,Server,我正在使用“lastAccessed”datetime字段的资源创建一个数据库服务器。此字段必须随服务器每次读取的时间而更新,但不能随查询而更新。如果我想允许客户端随意更新此字段,我应该如何设计RESTAPI 我想了几个选择,但没有一个是正确的 GET/api/resources/{resource\u id} 即使这是一个GET,它也会更新“LastAccess”字段 PATCH/api/resources/{resource\u id}with{lastcessed:“垃圾值”} 忽略来自

我正在使用“lastAccessed”datetime字段的资源创建一个数据库服务器。此字段必须随服务器每次读取的时间而更新,但不能随查询而更新。如果我想允许客户端随意更新此字段,我应该如何设计RESTAPI

我想了几个选择,但没有一个是正确的

  • GET/api/resources/{resource\u id}

    即使这是一个GET,它也会更新“LastAccess”字段

  • PATCH/api/resources/{resource\u id}
    with
    {lastcessed:“垃圾值”}

    忽略来自客户端的值,并随服务器时间更新“LastAccess”

  • POST/api/resources/{resource\u id}/update上次访问时间
    无负载

    合同中约定的专用端点

  • PUT/api/resources/{resource\u id}/lastAccessed
    无负载

    此API的目的是传达此调用将用服务器的默认值(在本例中为服务器的时间)替换“lastAccessed”字段


  • 这是一个棘手的问题。执行
    GET
    请求通常不会影响任何有意义的响应

    所以我会选择你另外三个选择中的一个

    您的
    POST
    PUT
    示例很好,尽管我看不出向该端点发送“垃圾值”的理由

    您可以设置一个标志,如
    setLastAccessed:true
    。您的
    补丁
    正文的内容不需要与任何其他内容进行1:1的关联


    我可能会在
    /api/resources/{resource\u id}
    /api/resources/{resource\u id}/update last accessed time
    上发布一篇
    POST
    ,并给出更新
    last accessed time

    的具体说明,谢谢分享您的想法!顺便说一句,目前的答案似乎被缩短了。你能修好它吗?@Efreeto我不知道;i don’我不知道那句话的意思,所以我把它删掉了