【发布时间】:2013-07-18 02:53:39
【问题描述】:
假设我的 Express 应用程序中有一些 GET 路由:
// music albums
app.get('/api/albums', routes.albums.getAlbums);
app.get('/api/albums/:id', routes.albums.getAlbum);
app.get('/api/albums/artwork', routes.albums.getAlbumArtwork);
我尝试使用以下 jQuery AJAX sn-p 来攻击它们:
$("#retrieveAlbumArtwork").on("click", function() {
$.ajax({
url: "api/albums/artwork",
type: "GET",
data: {
artist: $("#albumArtist").val(),
title: $("#albumTitle").val()
},
// ... callbacks and such
由于某种原因,此调用使用 /:id 参数而不是显式的 /artwork 路由命中第二个处理程序。像这样交换它们会使它们按预期运行:
// music albums
app.get('/api/albums', routes.albums.getAlbums);
app.get('/api/albums/artwork', routes.albums.getAlbumArtwork);
app.get('/api/albums/:id', routes.albums.getAlbum);
有人能准确解释为什么会这样吗?我会假设 Express 足够聪明,可以识别 id 参数 (/albums/23453243) 与查询字符串 (/albums/artwork?artist=artistName&title=albumTitle) 并进行适当的路由,但情况似乎并非如此?
【问题讨论】:
标签: node.js api get routing express