我想绕到我的头如何正确处理POST请求并提供休息与网络API和C#的客户端。
说我有一个客户控制器,并用POST创建一个新客户。我觉得在后台创建客户后做适当的事情是在“位置”返回其REST URL。
所以我这样做了,但是然后,从客户端我在HttpResponseMessage.Content中得到了“ api / customers / 17”,如果我想从那个新创建的客户那里获得更多的细节,我需要做一个ID为17的GET。 ,这意味着我需要从网络API主机(例如http://mycompany.com +内容“ api / customers / 17”)构建新的url,以获取该客户的信息。
这看起来不太优雅,所以我想我在这里错过了一些东西。我知道JavaScript并花哨的东西自动转换这部分客户的网址为实际的客户对象,但如果客户端是一个C#应用程序是什么。什么是干净的推荐方法获得创建的客户?
答案 0 :(得分:1)
在正常情况下,实际上不需要从POST中返回完整的对象,因为您可能已经知道对象的详细信息。
关于返回完整url:这确实是常见的做法,尽管您必须考虑一个安全问题:如果系统接受完整url,则更容易让它访问不受信任的资源。
所以,清洁的方法是返回一个201,包括资源全部或部分网址,根据您的情况。我会坚持到完整的URL,但在一般情况下,所有的客户知道主机URL。