Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
REST与PHP,如何选择查询字符串_Php_Web Services_Rest - Fatal编程技术网

REST与PHP,如何选择查询字符串

REST与PHP,如何选择查询字符串,php,web-services,rest,Php,Web Services,Rest,对于这个示例,我将显示两种类型的查询字符串。 我知道web服务的查询字符串应该是1而不是2 我的问题是:如何在php中管理第一个?这不是对第二个url的重写吗 使用#2查询字符串,我假设有一个findbyproductcode.php页面处理GET变量(?productcode=4xheua),用这个productcode检查一些数据库并返回一些数据 #1应该如何工作?我应该有一个4xxheua.php吗?(显然不是…)。。。我就是不明白。你喜欢1胜过2的唯一原因是因为1在语义上更直观 有如

对于这个示例,我将显示两种类型的查询字符串。 我知道web服务的查询字符串应该是1而不是2

  • 我的问题是:如何在php中管理第一个?这不是对第二个url的重写吗

    使用#2查询字符串,我假设有一个findbyproductcode.php页面处理GET变量(?productcode=4xheua),用这个productcode检查一些数据库并返回一些数据


    #1应该如何工作?我应该有一个4xxheua.php吗?(显然不是…)。。。我就是不明白。

    你喜欢1胜过2的唯一原因是因为1在语义上更直观

    有如下URL是有意义的:

    而不是

    据说这也有助于你的搜索引擎优化得分


    如果您只是在构建一个Web服务,比如:机器与机器对话,那么URL看起来是什么并不重要。您也可以只使用一个URL来接受所有输入,并根据输入数据在内部执行“路由”。

    您选择1而不是2的唯一原因是1在语义上更直观

    有如下URL是有意义的:

    而不是

    据说这也有助于你的搜索引擎优化得分


    如果您只是在构建一个Web服务,比如:机器与机器对话,那么URL看起来是什么并不重要。您也可以只拥有一个URL,它接受所有输入,并根据输入数据在内部执行“路由”操作。

    如果您正试图编写一个API,那么有很多事情要做-是的,需要重写,但是不必为所有参数设置一个页面-Luracast有一个很棒的开源Rest API调用ed restler,可以开始使用。

    如果你想编写一个API,那么有很多事情要做-是的,需要重写,但是不一定要有一个页面来显示所有参数-Luracast有一个很棒的开源Rest API调用ed restler,可以开始使用。

    一个例子来实现#1

    1:将不带图像、css(,等等)的所有路径发送到
    root/index.php
    (例如Apache上的mod_rewrite)
    2:在
    index.php
    中,从
    $\u服务器['pathinfo']
    或其他方式获取参数。
    3:解析并处理它

    如果使用Apache和mod_rewrite,请检查文档:

    一个实现#1的例子

    1:将不带图像、css(,等等)的所有路径发送到
    root/index.php
    (例如Apache上的mod_rewrite)
    2:在
    index.php
    中,从
    $\u服务器['pathinfo']
    或其他方式获取参数。
    3:解析并处理它

    如果使用Apache和mod_rewrite,请检查文档:


    • 是的,只是URL重写。目前我正在使用Symfony 1.3,他们的htaccess如下所示:

      Options +FollowSymLinks +ExecCGI
      
      <IfModule mod_rewrite.c>
        RewriteEngine On
      
        # uncomment the following line, if you are having trouble
        # getting no_script_name to work
        #RewriteBase /
      
        # we skip all files with .something
        #RewriteCond %{REQUEST_URI} \..+$
        #RewriteCond %{REQUEST_URI} !\.html$
        #RewriteRule .* - [L]
      
        # we check if the .html version is here (caching)
        RewriteRule ^$ index.html [QSA]
        RewriteRule ^([^.]+)$ $1.html [QSA]
        RewriteCond %{REQUEST_FILENAME} !-f
      
        # no, so we redirect to our front web controller
        RewriteRule ^(.*)$ index.php [QSA,L]
      </IfModule>
      
      Options+FollowSymLinks+ExecCGI
      重新启动发动机
      #如果遇到问题,请取消对以下行的注释
      #无法使用脚本名称
      #重写基/
      #我们跳过了所有的文件
      #重写条件%{REQUEST_URI}\+$
      #重写条件%{REQUEST\u URI}!\。html$
      #重写规则。*-[L]
      #我们检查.html版本是否在这里(缓存)
      重写规则^$index.html[QSA]
      重写规则^([^.]+)$$1.html[QSA]
      重写cond%{REQUEST_FILENAME}-F
      #不,所以我们重定向到前端web控制器
      重写规则^(.*)$index.php[QSA,L]
      

      在这种情况下,只需将index.php作为控制器,就可以将此vhost的所有URL发送给它。轻松点

      是的,只是URL重写。目前我正在使用Symfony 1.3,他们的htaccess如下所示:

      Options +FollowSymLinks +ExecCGI
      
      <IfModule mod_rewrite.c>
        RewriteEngine On
      
        # uncomment the following line, if you are having trouble
        # getting no_script_name to work
        #RewriteBase /
      
        # we skip all files with .something
        #RewriteCond %{REQUEST_URI} \..+$
        #RewriteCond %{REQUEST_URI} !\.html$
        #RewriteRule .* - [L]
      
        # we check if the .html version is here (caching)
        RewriteRule ^$ index.html [QSA]
        RewriteRule ^([^.]+)$ $1.html [QSA]
        RewriteCond %{REQUEST_FILENAME} !-f
      
        # no, so we redirect to our front web controller
        RewriteRule ^(.*)$ index.php [QSA,L]
      </IfModule>
      
      Options+FollowSymLinks+ExecCGI
      重新启动发动机
      #如果遇到问题,请取消对以下行的注释
      #无法使用脚本名称
      #重写基/
      #我们跳过了所有的文件
      #重写条件%{REQUEST_URI}\+$
      #重写条件%{REQUEST\u URI}!\。html$
      #重写规则。*-[L]
      #我们检查.html版本是否在这里(缓存)
      重写规则^$index.html[QSA]
      重写规则^([^.]+)$$1.html[QSA]
      重写cond%{REQUEST_FILENAME}-F
      #不,所以我们重定向到前端web控制器
      重写规则^(.*)$index.php[QSA,L]
      

      在这种情况下,只需将index.php作为控制器,就可以将此vhost的所有URL发送给它。轻松点

      “我知道一个web服务的查询字符串应该是1而不是2”-为什么?我真的看不出它的方便性,但它被许多更优雅的人引用,不知何故它是正确的方式…但是,这只是一个url重写规则吗?我认为没有,我只是不知道这应该如何工作…这是RESTAPI的工作方式,url/resource\u name/id。顺便说一句,服务器端(rest服务器)和客户端URL由大量现有软件处理。例如,我在客户端使用CodeIgniter Rest server处理请求和Backbone.js。虽然您可以(如果您愿意)通过GET/POST/DELETE传递额外的参数,但这两种方法都可以很好地工作并自动处理URL/PUT@FritsvanCampen因为这样搜索引擎更容易索引所有页面。查询字符串应该用于添加一些特定的过滤器,请参见“我知道web服务的查询字符串应该看起来不止1个”-为什么?我真的看不出它的方便性,但它被许多更优雅的人引用,不知何故这是正确的方法…但是,这只是一个url重写规则吗?我认为没有,我只是不知道这应该如何工作…这是RESTAPI的工作方式,url/resource\u name/id。顺便说一句,服务器端(rest服务器)和客户端URL由大量现有软件处理。例如,我在客户端使用CodeIgniter Rest server处理请求和Backbone.js。虽然您可以(如果您愿意)通过GET/POST/DELETE传递额外的参数,但这两种方法都可以很好地工作并自动处理URL/PUT@FritsvanCampen因为这样搜索引擎更容易索引所有pag