骨干RESTful CRUD 404

时间:2012-10-16 13:55:36

标签: rest backbone.js crud

所以我尝试使用book from Addy Osmani将CRUD实现到我的Backbone应用程序中。我遇到的一个问题是,虽然我目前使用带有express / mongoose / path的NodeJS服务器的相同代码,但我获得了所有CRUD操作的404。这是我在localhost上的当前文件夹结构

/
/myApplication/ (working dir)
/myApplication/js (contains all js files from Backbone app)
/myApplication/mongoServer.js (the server app)

因此根据指南,唯一需要设置的是集合中的url

myCollection = Backbone.Collection.extend({
 model: myModel,
 url: '/api/myModels'
 ...
})

我期望的是,一旦我添加模型,因为它是集合的一部分,它会创建一个集合(如果它不存在),然后将其与服务器同步。这可能发生,但有一个例外

POST http://localhost/api/todos 404 (Not Found)

当然我发现这不正确,因为它可能需要查看路径

POST http://localhost/myApplication/api/todos

因为mongoServer.js位于myApplication的文件夹中。我真的不知道如何解决这个问题。也许有人可以改变路线,或者我的逻辑中存在关于我的实施的缺陷?

编辑:另外澄清一下,我已经测试了

url: '/myApplication/api/myModels'

XHR完成加载,但POST仍然是404。

1 个答案:

答案 0 :(得分:0)

我遇到的一般问题是使用Express应用服务器进行设置。引起麻烦的那条线是

app.configure(function() {
 app.use(express.static(path.join(application_root, "public")));
});

其中基本上告诉表示应用程序的静态路径位于公共文件夹中(我显然没有)。当快速服务器通过

监听您选择的端口时
app.listen(3000);

您可以在

下找到您真正想要访问的页面(例如index.html或static.html)
http://localhost:3000/index.html or static.html

在localhost之后没有任何 / myApplication 。这也有助于应用程序本身的常规URL设置,因为它实际上只需要 / api / myModels