通过RESTWebAPI向POST操作传递或不传递ID的最佳实践?

通过RESTWebAPI向POST操作传递或不传递ID的最佳实践?,rest,post,request,response,asp.net-web-api,Rest,Post,Request,Response,Asp.net Web Api,我有一个在数据库中创建记录的POST操作。我想知道下面哪个选项更好 将ID作为参数传递给POST,这意味着我们需要使用GUID值初始化参数。因此,除了状态代码之外,POST没有响应 不要将ID传递给POST操作,让它在数据库中创建(例如IDENTITY),然后在响应中连同状态代码一起返回 我会选择选项2。虽然对于1有一些很好的论点,但请考虑以下几点: 正如您所暗示的,所有传统的DBs都允许生成主键(通常是通过自动递增),也就是说,您可以免费获得主键 调用方没有责任为您的数据库发明合适的ID 通过

我有一个在数据库中创建记录的POST操作。我想知道下面哪个选项更好

  • 将ID作为参数传递给POST,这意味着我们需要使用GUID值初始化参数。因此,除了状态代码之外,POST没有响应

  • 不要将ID传递给POST操作,让它在数据库中创建(例如IDENTITY),然后在响应中连同状态代码一起返回


  • 我会选择选项2。虽然对于1有一些很好的论点,但请考虑以下几点:

  • 正如您所暗示的,所有传统的DBs都允许生成主键(通常是通过自动递增),也就是说,您可以免费获得主键

  • 调用方没有责任为您的数据库发明合适的ID

  • 通过公开它,您将内部细节提交到外部API,这永远都不好。如果您希望以后完全重新考虑您的ID模式(例如保留的ID范围),该怎么办

  • 选项1有太多需要测试的额外错误条件和路径(冲突ID等),时间最好花在API本身上