代码之家  ›  专栏  ›  技术社区  ›  pr1001

php rest api如何接收输入的数据?

  •  3
  • pr1001  · 技术社区  · 14 年前

    我正在编写一个API,希望遵循REST方法。据我所知,如果我想让API用户更新特定的记录 PUT http://server/specific _resource 应支持类型请求。当然,他们不会 GET 他们需要传递新的数据,我的问题是如何做到这一点(在我的特定情况下,只更新指定记录的某些字段,但这在这里并不重要)。我可以想到两种方法:包括请求主体中的数据(使用curl: curl -X PUT -d "key=value" http://server/specific _resource )或在查询字符串中(使用curl: curl -X PUT http://server/specific _resource?key=value )

    不幸的是,不管我采用什么方法,都很难获得所提供的数据。问题似乎是PHP只真正完全理解两种HTTP方法, 得到 POST PUT considered to be for file uploads . 如果我在正文中包含数据,那么访问它的唯一方法似乎是 via an fopen('php://input') call . 例如, http_get_request_body() 不提供数据。同样,在 $_REQUEST 超全球。如果我不想处理原始请求主体 fopen('php://input') 然后,我似乎必须将数据作为查询字符串参数发送,因为数据将显示为 $_GET 超级全球(也如此 )

    我专门使用cakephp,它似乎只填充 form 数组 params 我的控制器方法中的数组 if the request was a POST . 输入查询字符串参数 帕拉姆 url 如果在请求URL中使用,则不考虑请求方法。毫不奇怪,我 not the only one 谁碰上了这个。

    你建议的解决方案是什么?处理输入流?使用查询字符串参数?忘了 动词与用法 相反?

    2 回复  |  直到 11 年前
        2
  •  0
  •   Frederic Nault    11 年前

    使用服务器HTTP方法变量检查其是否为Put。

    我建议你看一下Slim源代码,看看它们是如何处理的。

    加油!

    推荐文章