在Laravel上将PUT请求视为GET请求

时间:2019-08-13 14:41:56

标签: laravel apache api put php-7.3

我正在制作Laravel 5.8 API(PHP 7.3.6),并且GET,POST和DELETE函数均正常运行,但是我无法使PUT发挥应有的作用。当我使用 Postman 并对“站点”进行PUT请求时,其行为类似于GET请求。 GET,POST和DELETE方法的行为符合我的预期,即转到正确的路由。

它在IIS上的行为类似,但现在我将Docker与Apache和PHP 7.3.6一起使用,并且具有相同的行为。

感觉必须与Laravel有关,否则我可能是在错误地使用Postman。有什么想法吗?

这是我的api.php ...

Route::get('sites', 'SelectSites@index');
Route::get('sites/{id}', 'SelectSites@show');
Route::put('sites', 'SelectSites@create');
Route::post('sites/{id}', 'SelectSites@update');
Route::delete('sites/{id}', 'SelectSites@delete');

这是创建方法...

public function create(){
    $sites = "CREATE";
    return $sites;
}

这是docker-compose.xml ...

version: '3'
services:
app:
  build:
    context: .
    dockerfile: .docker/Dockerfile
  image: laravel-docker
  ports:
    - 8086:80

这是VirtualHost文件...

<VirtualHost *:80>
DocumentRoot /srv/app/public

<Directory "/srv/app/public">
    AllowOverride all
    Require all granted
</Directory>

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined


    <Limit GET POST PUT DELETE>
      Order allow,deny Allow from all
    </Limit>

</VirtualHost>

更新

这在IIS中本地工作,我只需要重新启动本地计算机即可。它也可以在PHP Web服务器php -S 0.0.0.0:8080中完美运行。我以前从未使用过PUT,是否需要做一些配置Docker以使用PUT的工作?

1 个答案:

答案 0 :(得分:0)

据我所知,您将POST和PUT混为一谈。 POST请求用于创建资源,而PUT用于更新。