Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
GET和“GET”的常规模型正常吗;“平坦”;从设计REST的角度看POST的模型?_Rest - Fatal编程技术网

GET和“GET”的常规模型正常吗;“平坦”;从设计REST的角度看POST的模型?

GET和“GET”的常规模型正常吗;“平坦”;从设计REST的角度看POST的模型?,rest,Rest,关于在RESTAPI中为POST和GET方法提供不同模型的可能性的问题已经被问了好几次,但我想澄清一个具体的问题。 假设我们正在设计关于体育竞赛的api 模型和相应的资源: 1) Player { "id" : 2, "firstName" : "Nikolay", "lastName": "Grigoryan", ..... } /球员/2 2) 比赛 { "id" 1, "name": "Some tournament", "date" "01.02.2019

关于在RESTAPI中为POST和GET方法提供不同模型的可能性的问题已经被问了好几次,但我想澄清一个具体的问题。 假设我们正在设计关于体育竞赛的api

模型和相应的资源:

1) Player
{  "id" : 2,
   "firstName" : "Nikolay",
   "lastName": "Grigoryan",
   ..... 
}
/球员/2

2) 比赛

{ "id" 1,
  "name": "Some tournament",
  "date" "01.02.2019",
  .......
}
/锦标赛/1

3) 参与者

{
  "id": 2,
   "tournament": { "id" 1,
      "name": "Some tournament",
      "date" "01.02.2019",
      .......
    },
   "player": {  "id" : 2,
     "firstName" : "Nikolay",
     "lastName": "Grigoryan",
     ..... 
   }
}
/锦标赛/1/参与者/2

当我请求某些锦标赛的参与者时,有一个单独的名为玩家的字段,包含所有可用字段的完整嵌套玩家模型,这非常方便。但当我创建一个新的参与者时,情况对我来说就不同了。我更愿意让playerId作为帖子主体提供:

/锦标赛/1/参与者

职位

但不是

{
  ....,
  "player": {
    "id": 2,
   ....
  }
}
这里似乎不需要嵌套模型,但只有playerId就足够了,因此根本不需要只为保存id而嵌套对象

对POST请求进行这样的模型简化可以吗?或者它们应该具有相同的结构?这样的结论可能让我错过了一些重要的东西。如果是这样的话,我将非常感谢您的解释

提前谢谢

对POST请求进行这样的模型简化可以吗?或者它们应该具有相同的结构?这样的结论可能让我错过了一些重要的东西。如果是这样的话,我将非常感谢您的解释

作为一个网站,您将如何做到这一点

您可能会有某种形式,带有一个下拉控件,列出您可能使用的标识符。客户机将从列表中选择标识符,然后提交表单。结果将是一条HTTP请求消息,其标识符位于请求正文中

对POST请求进行这样的模型简化可以吗?或者它们应该具有相同的结构?这样的结论可能让我错过了一些重要的东西。如果是这样的话,我将非常感谢您的解释

作为一个网站,您将如何做到这一点


您可能会有某种形式,带有一个下拉控件,列出您可能使用的标识符。客户机将从列表中选择标识符,然后提交表单。结果将是一条HTTP请求消息,该消息的标识符位于请求正文中。

至少可以借鉴的一种方法是查看

如果一场比赛有球员,这是一种多对多关系,那么球员通过链接与比赛关联可能是有意义的

  • 要获得玩家列表,只需嵌入玩家资源
  • 要识别玩家,您不需要使用他们的id,而是使用他们的url
  • 要将玩家与锦标赛关联,可以更新链接

另一方面,我认为接收(GET)和发送(POST)的模型都是相同的,这是一个非常好的特性,使事情更容易理解,但在适当的情况下放弃这个规则也是完全好的。我发现,尤其是在人们经常需要不同方法的情况下,多个资源/模型相互关联。没有一种优雅的方法可以解决这个问题,但是使用链接而不是id可能会给你一些工具,以一种适用于任何地方的通用方式来解决这个问题。

至少可以从中获得灵感的一种方法是看一看

如果一场比赛有球员,这是一种多对多关系,那么球员通过链接与比赛关联可能是有意义的

  • 要获得玩家列表,只需嵌入玩家资源
  • 要识别玩家,您不需要使用他们的id,而是使用他们的url
  • 要将玩家与锦标赛关联,可以更新链接

另一方面,我认为接收(GET)和发送(POST)的模型都是相同的,这是一个非常好的特性,使事情更容易理解,但在适当的情况下放弃这个规则也是完全好的。我发现,尤其是在人们经常需要不同方法的情况下,多个资源/模型相互关联。没有一种优雅的方法可以解决这个问题,但是使用链接而不是id可能会为您提供一些工具,以一种适用于所有地方的通用方式解决这个问题。

谢谢您的回答。不幸的是,我没有领会你的意思。更确切地说,我不明白你对我的建议是什么-在两种情况下(POST和GET)是否使用相同的模型?关于可能的客户端用例-是的,可能用户应该从下拉列表中选择所需的玩家,Http请求将发送到服务器,其中包含有关锦标赛和要添加的玩家的信息。对于Post请求,我只能发送该玩家的ID。但是对于GET请求,我想在一个请求中获得关于球员的所有信息,与给定的锦标赛相关,而不需要通过球员id发送额外的请求。谢谢您的回答。不幸的是,我没有领会你的意思。更确切地说,我不明白你对我的建议是什么-在两种情况下(POST和GET)是否使用相同的模型?关于可能的客户端用例-是的,可能用户应该从下拉列表中选择所需的玩家,Http请求将发送到服务器,其中包含有关锦标赛和要添加的玩家的信息。对于Post请求,我只能发送该玩家的ID。但对于GET请求,我希望在一个请求中获得与给定锦标赛相关的球员的所有信息,而不需要通过球员id发送额外的请求。
{
  ....,
  "player": {
    "id": 2,
   ....
  }
}