REST:我们应该从POST返回完整的对象或api网址吗?

时间:2019-02-02 21:43:08

标签: c# rest asp.net-web-api

我想绕到我的头如何正确处理POST请求并提供休息与网络API和C#的客户端。

说我有一个客户控制器,并用POST创建一个新客户。我觉得在后台创建客户后做适当的事情是在“位置”返回其REST URL。

所以我这样做了,但是然后,从客户端我在HttpResponseMessage.Content中得到了“ api / customers / 17”,如果我想从那个新创建的客户那里获得更多的细节,我需要做一个ID为17的GET。 ,这意味着我需要从网络API主机(例如http://mycompany.com +内容“ api / customers / 17”)构建新的url,以获取该客户的信息。

这看起来不太优雅,所以我想我在这里错过了一些东西。我知道JavaScript并花哨的东西自动转换这部分客户的网址为实际的客户对象,但如果客户端是一个C#应用程序是什么。什么是干净的推荐方法获得创建的客户?

1 个答案:

答案 0 :(得分:1)

在正常情况下,实际上不需要从POST中返回完整的对象,因为您可能已经知道对象的详细信息。

关于返回完整url:这确实是常见的做法,尽管您必须考虑一个安全问题:如果系统接受完整url,则更容易让它访问不受信任的资源。

所以,清洁的方法是返回一个201,包括资源全部或部分网址,根据您的情况。我会坚持到完整的URL,但在一般情况下,所有的客户知道主机URL。