REST:使用url查询参数和正文内容发布端点

时间:2017-03-20 17:16:06

标签: git rest

我正在为不同的git服务器创建一个webhook端点。 webhook url将在git服务器中配置,并将用于发送POST请求,其中包含有关事件的元数据的主体(如提交提交后的提交信息)。 POST请求的内容与服务器的内容不同:属性和值是特定于git的提供者。

如果可以使用查询参数来区分我正在处理的git提供程序,我想使用相同的端点URL。 我的终点是这样的:

/repositories/commits?type={git_provider}

在gitlab或Atlassian stash中配置网址的示例如下:

/repositories/commits?type=stash
/repositories/commits?type=gitlabs

问题是POST请求的正文内容会因type的值而有所不同。这样做是否可行?或者我应该为每种类型创建不同的端点,在这种情况下,我将有多个端点,每个端点根据git类型处理不同的Post的主体。

/stash/repositories/commits
/gitlabs/repositories/commits

使用带有查询参数的单个端点

  • 尊重其他端点中使用的相同层次结构

缺点:

  • 根据查询参数的值,由于属性的命名/值,将有不同的方式读取请求正文。

使用带有查询参数的单个端点

  • 每个端点都很简单,并且将处理固定的帖子

缺点:

  • 新端点的层次结构将不遵循现有端点的相同层次结构。

1 个答案:

答案 0 :(得分:1)

虽然我从未使用过git API,但我预计不同的git提供程序会有很多重叠的属性。每个提供商可能使用不同的术语或命名方案,但实际数据本身也是相同的。因此,我建议使用单个资源,查询字符串区分将使用哪个提供程序。

以通用方式命名您的API属性,该方式与任何特定提供程序的关联性过于严格。然后,您将API属性名称“转换”为特定于提供程序的属性。这将隐藏API使用者的各种提供者实现,因此如果您添加新提供者或更改它们,您的API将不会更改。