【问题标题】:NGINX - rewrite rules for PHP RESTNGINX - 重写 PHP REST 规则
【发布时间】:2017-12-30 23:33:36
【问题描述】:

我目前正在使用 NGINX(和 PHP-FPM)学习 REST。

我有几个关于路由的问题(例如 /customers)。

首先我应该使用 NGINX 还是 PHP 进行路由(将它们作为重写规则,如 /customer/{cusID} 将映射到 /customer.php?cusid={cusid}) 或根据 /customer/{cusID} 映射到 /customer.php 进行重写,然后处理是否有使用 PHP 的 URI 中的 cusID 资源?

其次,rewrite 是不是最好的实现方式,我看到你可以在 NGINX 中使用 alias 来做类似的事情?

【问题讨论】:

    标签: php rest api nginx


    【解决方案1】:

    在这种情况下,我将使用如下简单的重写规则:

    rewrite ^customer/([0-9]+)$ /customer.php?cusid=$1 last
    

    您的 URL 将保持打印精美,您将能够在 PHP 代码中处理指定的客户 ID。

    【讨论】:

    • 是的,这是有道理的,如果我使用 http 方法 POST 来针对这个客户创建一些东西,例如/customer/543/address 将映射到 /address.php?cusid=543,是否可以从帖子中的查询字符串中提取 cusid 的值?例如首先使用 GET 从查询字符串中获取 cusid,然后在处理帖子时使用此值,还是应该永远不要将两个 GET/POST 混合在一起?
    • 使用 POST 查询参数,事情变得有点困难......看看这个问题,它应该为您提供一个很好的起点:serverfault.com/questions/744021/…
    • 谢谢,是的,我知道它在那里做了什么,但我想一个更笼统的问题,可以在发布请求和发布数据中使用查询参数吗?这不违反任何规则或标准吗?
    • 好吧,如果让我选择,我不会使用它们。我更喜欢在不混合的情况下使用查询参数或发布参数。但既然框架允许你这样做,那么它是合法的。
    • 好的,谢谢,基于此,我最好使用 nginx 重写如上,所以一切都转到 /customer.php,然后使用 PHP 提取 URI 的部分。例如/customer/543/address(所以我会根据正斜杠分解 URI,然后在代码逻辑中使用该值(543),从而无需使用查询字符串并一起发布?
    猜你喜欢
    • 2016-06-20
    • 1970-01-01
    • 2010-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-04
    • 2013-08-05
    相关资源
    最近更新 更多