使用 Codeigniter 获取 PUT 请求

2023-11-21

我现在有一个 CodeIgniter 问题:我使用REST 控制器库(这真的很棒)创建一个 API,但我无法收到 PUT 请求...

这是我的代码:

function user_put() {
    $user_id = $this->get("id");
    echo $user_id;
    $username = $this->put("username");
    echo $username;
}

我使用curl来发出请求:

curl -i -X PUT -d "username=test" http://[...]/user/id/1

user_id 已满,但用户名变量为空。但它与动词 POST 和 GET 一起使用。 请问你有什么想法吗?

谢谢 !


根据:http://net.tutsplus.com/tutorials/php/working-with-restful-services-in-codeigniter-2/我们应该咨询https://github.com/philsturgeon/codeigniter-restserver/blob/master/application/libraries/REST_Controller.php#L544看到这个方法:

/**
 * Detect method
 *
 * Detect which method (POST, PUT, GET, DELETE) is being used
 * 
 * @return string 
 */
protected function _detect_method() {
  $method = strtolower($this->input->server('REQUEST_METHOD'));

  if ($this->config->item('enable_emulate_request')) {
    if ($this->input->post('_method')) {
      $method = strtolower($this->input->post('_method'));
    } else if ($this->input->server('HTTP_X_HTTP_METHOD_OVERRIDE')) {
      $method = strtolower($this->input->server('HTTP_X_HTTP_METHOD_OVERRIDE'));
    }      
  }

  if (in_array($method, array('get', 'delete', 'post', 'put'))) {
    return $method;
  }

  return 'get';
}

查看我们是否定义了 HTTP 标头HTTP_X_HTTP_METHOD_OVERRIDE它使用它来支持我们在网络上实现的实际动词。要在请求中使用它,您需要指定标头X-HTTP-Method-Override: method (so X-HTTP-Method-Override: put) 生成自定义方法覆盖。有时框架期望X-HTTP-Method代替X-HTTP-Method-Override所以这因框架而异。

如果您通过 jQuery 执行此类请求,则可以将此块集成到您的 ajax 请求中:

beforeSend: function (XMLHttpRequest) {
   //Specify the HTTP method DELETE to perform a delete operation.
   XMLHttpRequest.setRequestHeader("X-HTTP-Method-Override", "DELETE");
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Codeigniter 获取 PUT 请求 的相关文章

随机推荐

  • Linq to SQL 和 Linq to Objects 查询是否相同?

    如果我们抽象出 DataContext 那么 L2S 和 L2O 查询是否相同 我已经有了一个可以演示这一点的工作原型 但它非常简单 并且想知道它是否能够支持更高级的查询 有人知道吗 不 他们不一样 LINQ to Objects 查询操作
  • C++11 lambda 返回引用

    我在从 lambda 返回引用时遇到一些麻烦 此代码有效 std function
  • 为什么 find 命令 -exec 选项需要反斜杠和分号?

    我已经开始在linux终端中组合不同的命令 我想知道为什么命令需要反斜杠和分号 例如 find name blabla exec cp test 当一个简单的 cp 命令很简单时 cp randomfile test 没有 它们是为了清楚地
  • 在 FXML 中使用 fx:id 作为 CSS id

    似乎在 FXML 中 如果您不指定 ID CSS 则默认使用 fx id 值 我之前的理解是这两者是完全不相交的 ID用于CSS并且仅用于CSS fx id 用于控制器中的 FXML 绑定 这可以通过一个小测试来演示 三个按钮 第一个带有
  • 如何在已安装的 Express 应用程序中共享会话

    我有一个相当复杂的基于 Express 的 Web 应用程序 它分为几个子应用程序 这些子应用程序也是 Express 应用程序 使用app use 如何在应用程序的所有部分之间无缝地使用同一会话 与 Connect 捆绑在一起的中间件具有
  • 如何在 C 中的分叉进程上使用 POSIX 信号量?

    我想分叉多个进程 然后在它们上使用信号量 这是我尝试过的 sem init sem 1 1 semaphore pshared value if pid 0 parent process wait NULL wait all child p
  • Python lambda 和作用域[重复]

    这个问题在这里已经有答案了 鉴于这段代码 funcs for x in range 3 funcs append lambda x print f for f in funcs 我希望它能打印出来 0 1 2 而是打印 2 2 2 关于 l
  • OSX 10.13.4 上堆栈安装 ghc-mod 因依赖项冲突而失败

    当我尝试通过堆栈安装 ghc mod 时 我最终遇到了这些依赖项冲突 Error While constructing the build plan the following exceptions were encountered In
  • 如何通过ldap中的域名获取用户的用户名和SID

    我正在尝试获取特定域的用户信息 该域将作为程序的输入 根据域名 它应该返回用户名 或用户的 NT Id 和 SID 的列表 我是 LDAP 编程新手 任何人都可以帮助我获取此列表 如果您使用 NET 3 5 及更高版本并谈论 Active
  • JavaFX 在场景中嵌入场景

    我有一个使用 javafx 场景来渲染某些内容的应用程序 我想将该渲染放入我制作的一些 GUI 中 也在 javafx 中 我该怎么做呢 基本上有一些容器我可以将场景放入其中 然后将该容器放入 GUI 中 抱歉 如果这是一个新手问题 我是
  • 类型特征:检查类是否具有特定功能(可能继承)

    我知道有很多可能的方法来检测一个类是否具有特定的功能 但没有一种方法真正适合我的具体情况 我当前用于检查成员函数是否正确的实现 除了继承函数之外 include
  • 图片框问题

    我有个问题 我有 3 个图片框 里面有 3 张不同的图像如图所示 我可以设置什么图片框3所以两张图片看起来都一样 EDITED 我想将pictureBox3移动到pictureBox2上 所以没有选项将它们合并为单个图像 确保图像在pict
  • unix管道多个作家

    如果有多个线程将固定长度数据 例如 4 字节地址 写入单个管道 并且该管道有一个读取器 是否可以保证读取器按顺序获取字节 换句话说 就是write 到管道原子 http pubs opengroup org onlinepubs 00969
  • 如果还不是可迭代的,则 Pythonic 转换为单例可迭代

    假设我有 def distance2 vector1 vector2 zipped zip vector1 vector2 difference2 vector2 vector1 2 for vector1 vector2 in zippe
  • 表单提交后隐藏/显示 Div?

    你好 我在让它工作时遇到了一些麻烦 非常简单 我想做的就是在提交 html 表单后显示一个 div
  • MVC 中的 MVC-ControllerTypeCache.xml

    在调试 ASP NET MVC 源时我发现 MVC ControllerTypeCache xml 文件被使用 但我无法理解这个文件的用途 我的意思是这个文件存储在哪里 asp net MVc 如何使用这个文件 请帮忙 该文件用于缓存控制器
  • Android项目的Gradle组装失败,找不到R.txt

    抱歉我的英语不好 我正在尝试使用 Android Studio 将我的项目迁移到 Gradle 但目前构建失败processDebugResources 错误信息 任务 app processAdultDebugResources 执行失败
  • 轻松测量经过的时间

    我正在尝试使用time 测量我的程序的各个点 我不明白的是为什么之前和之后的值是相同的 我知道这不是分析我的程序的最佳方式 我只是想看看需要多长时间 printf MyProgram before time ld n time NULL d
  • 绑定时 ObjectContext 实例已被释放[重复]

    这个问题在这里已经有答案了 这是我的代码 public class JobsRepository BaseNewsletterRepository public IEnumerable
  • 使用 Codeigniter 获取 PUT 请求

    我现在有一个 CodeIgniter 问题 我使用REST 控制器库 这真的很棒 创建一个 API 但我无法收到 PUT 请求 这是我的代码 function user put user id this gt get id echo use