如果我需要将变量传递给服务器但查询是 SELECT,我应该使用哪种类型的 http 请求?

我有一个烹饪食谱的博客,在这个博客上注册的用户可以阅读其他用户的帖子。我会查看默认设置:在主页中只能阅读与已登录用户相同城市的帖子。为此,我将一个包含用户 ID 的变量传递给服务器,该变量用于执行查询以恢复城市名称。当我检索这个城市的名称时,我可以查询 ( SELECT * FROM recipes WHERE city = '$cityUser' ecc.) 以在主页中显示所有帖子。


本博客基于 RESTful 服务模型。


用于创建与服务器的连接的 JavaScript 代码:


      function printAllPosts() {

        var data = {};

        data.id_user = idUser;

        var jsondata = JSON.stringify(data);


        var oReq = new XMLHttpRequest();

        oReq.onload = function(){document.getElementById("ajaxres").innerHTML = oReq.responseText;};

        oReq.open("post", "api_printAllPosts.php/recipes/", true);

        oReq.send(jsondata);

      }

获取请求的HTTP方法、路径和正文的php代码是:


$method = $_SERVER['REQUEST_METHOD'];

$request = explode('/', trim($_SERVER['PATH_INFO'],'/'));

$input = json_decode(file_get_contents('php://input'),true);

如果在oReq.openhttp请求类型中是“post”,则一切正常并且 idUser 被传递到服务器,如果在oReq.openhttp请求类型中是“get”,则它不起作用。


如果我将数据传递到服务器并使用“post”方法与其连接,即使我正在发出只读请求并因此是选择查询,我是否尊重 RESTful 服务或者我是否必须实现另一种设计方法来实现“获取”方法?


隔江千里
浏览 143回答 1
1回答

素胚勾勒不出你

通常 apis 将GET用于从 API 读取数据。从概念上讲,GET意思是“给我 uri 的表示”。GET 请求不应该有正文。下面是一些 uris 的例子http://api.example/recipes - Give me all recipeshttp://api.example/recipes?city=Toronto - Give me all recipes from Toronto(?)http://api.example/recipes?q=tomato - Give me all recipes that use tomatoes
打开App,查看更多内容
随时随地看视频慕课网APP