2009-12-09 92 views
1

我正在开发一个REST CodeIgniter控制器,需要POST和PUT到多种格式的URL。确定REST POST/PUT请求格式

我能想到的主要格式将是:

  • XML
  • JSON
  • HTML表单数据

会有在URI例如所定义的响应格式/ format/xml或/ format/csv。 我不想在URI中定义请求格式。

我想知道如果任何人有找出请求格式,所以我的脚本就可以完成请求的任何建议。

我想有可能获得来自请求头“内容类型”这个数据?

  • “内容类型:文本/ xml” 的XML =
  • “内容类型:application/JSON”= JSON
  • “内容类型:文本/无格式”= HTLM表格数据**我想!*

这种方法是健壮的还是有更好的方法呢?

谢谢。

+0

HTML表单数据:在HTML 4.01规范说,它应作为'应用程序/ x-WWW的形式urlencoded':http://www.w3.org/TR/html401/interact /forms.html#h-17.13.4.1 – Boldewyn

回答

2

的内容类型是为了得到你想要的信息的正确方法的内容类型。

只要确保抛出异常并带有一些反馈和正确的http错误代码(如果客户端调用的格式不正确或未传递内容类型标头)(您也可以假定一种内容类型为默认值)

而且,你真的没有使用格式/ format_of_the_response。更好的方法是使用标头接受与使用标头内容的方式相同

+0

谢谢,我想我会考虑使用接受标题呢!希望我可以从jquery窗体中设置标题,绝对更优雅 – th3hamburgler

2

那种方法,只要强大的,你知道你的REST客户端将按照您的内容类型的规则。如果你控制客户端,那么这很好。如果你不控制客户端,那么当一个不寻常的(或不是)内容类型被传入时,调用失败的可接受程度如何?

哦,参考HTML表单数据具有“应用/的X WWW的形式,进行了urlencoded”

+1

谢谢,他们想出了那个活泼的字符串:-) – th3hamburgler