大家好,到目前为止,我使用post方法来更新服务器上的记录,并且从未为此目的使用Put方法,因为我对如何发送和接收Put请求上的数据感到非常困惑。我研究了一些博客,但我无法从中理解。
我有以下问题:
问题1:我是否必须在Put请求中使用参数或表单数据或两者?
问题2:另外,我们可以在任何请求中共享参数和表单数据中的数据吗?
问题3:想象一个情况,我必须在服务器上更新一个记录,其中包含一些基本信息和附件。那么我将如何用Put方法去做呢?
目前我正在codeigniter 3中创建api。
请帮我解决这个问题,谢谢你的出席。
问题1:我是否必须在Put请求中使用参数或表单数据或两者?
可以同时使用。
URL中的参数可以使用$this->input->get()
读取,而对于PUT,可以使用$this->input->input_stream('key', TRUE);
或$this->input->raw_input_stream
(参见文档
)。您必须先解析或处理原始数据,然后才能在代码中实际使用它。要查看PUT数据的样子,只需var_dump它
问题2:另外,我们可以在任何请求中共享参数和表单数据中的数据吗?
最好单独使用。但是这取决于您的需求,如果您希望这样做,您可以使用array_merge()
将GET和解析的PUT数据合并到一个变量
问题3:想象一种情况,我必须在服务器上更新一个记录,其中包含一些基本信息和附件。那么我将如何用Put方法去做呢?
你可以把基本信息放在URL参数和文件内容在请求体,但它可能看起来很丑,URL有长度限制,所以它可能不适合如果你的基本信息是大。
或者在请求体中将它们格式化为原始JSON。例子:
{
"name": "John Smith",
"address": "Blablabla",
"certificate_file": "<base64 encoded file content>"
}
对于服务器端代码,就像我之前评论的那样,我建议你使用公开可用的库,如CodeIgniter Rest server