我应该在哪里发送POST请求?

时间:2014-12-02 05:43:05

标签: php jquery url-routing phalcon

我正在使用Phalcon框架为PHP编写应用程序,我必须实现该功能,以允许用户在每个其他墙上写消息。所以使用JQuery我会写:

function postMessage()  {
    var message = $("#messageBox").val().trim().replace(/\n/g, '<br/>');
    if(message) {
        $.post("// request handler", {msg: message, wall: {{ user.id }}, 
             writer: {{ session.get('user')['id'] }})
            .done(function() {
                $("#messageBox").val('');
                alert( "Message posted" );
            })
            .fail(function() {
                alert( "Error posting message, please try again" );
            });
    }
}

此脚本位于domain.com/user/foobar

页面

我的问题是我的请求处理程序应该是什么(或者更确切地说)。我已经考虑了一下,并问了我的朋友并提出了三个选择:

  1. 发布到上面脚本所在的相同网址(例如 domain.com/user/foobar)
  2. 发布到另一个路由到的网址 与选项1在同一控制器中的另一个动作(例如 domain.com/postmessage。选项1和2都是相同的 控制器,但它们是不同的行为)
  3. 发布到API网址(例如api.domain.com)
  4. 我想到的一些专业人士是:

    1. 选项1和2都可以访问会话变量,所以我可以检查 如果用户已登录或未登录。选项3,我不能但是我可以 (不切实际地)希望没有人试图滥用系统和发布 与Fiddler或其他未登录的消息。
    2. 选项2比选项1
    3. 更清洁
    4. 如果我愿意,选项2和3都提供中央请求处理程序 我只会在墙上书写系统上实现相同的信息 必须复制Jquery代码并将其放在新视图或页面中。 使用选项1,我必须从用户控制器复制代码 将其重新加入每个新页面的控制器中。
    5. 我想到的一些缺点是:

      1. 选项2意味着我必须向路由器添加更多路由。这使得 路由更复杂。 (也许更慢???)
      2. (例如

        // Option 1
        $router->add('/user/{id}',
            array(
               'controller' => 'user',
               'action'     => 'show'
            )
        );
        
        // Option 2
        $router->add('/user/post/{id}',
            array(
               'controller' => 'user',
               'action'     => 'writeMessage'
            )
        );
        

        推荐和使用哪种方式?

2 个答案:

答案 0 :(得分:2)

永远不要假设所有用户都善良,聪明,这是人们破坏系统的方式。测试一切。

通常:1路= 1动作 如果您没有任何发布消息的路线,那么添加一个路径即可。 路线就像一个简单的&#34; if&#34;测试,它将在几纳秒内完成。

答案 1 :(得分:2)

我会继续根据需要定义路线。或者定义单个路由并在挂钩到远程过程的post请求中传递一个额外的参数。

在用户关注的地方保持谨慎并消除任何漏洞。考虑添加一个随机数。

谢谢,

C