Say mam kilka tras dostać się na moje wyraźne aplikacji:Node.js Wyznaczanie i porządkowanie trasy ekspresowej: jak ustalany jest priorytet?
// 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);
i próbować trafić je za pomocą naśladowania jQuery AJAX fragment:
$("#retrieveAlbumArtwork").on("click", function() {
$.ajax({
url: "api/albums/artwork",
type: "GET",
data: {
artist: $("#albumArtist").val(),
title: $("#albumTitle").val()
},
// ... callbacks and such
Z jakiegoś powodu, niniejsze zaproszenie hity drugi moduł obsługi, z parametrem /:id
, zamiast wyraźnej trasy /artwork
. Zamiana ich tak, aby działały zgodnie z oczekiwaniami:
// 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);
Czy ktoś może wyjaśnić, dlaczego tak się dzieje? Zakładam, że Express będzie na tyle sprytny, aby zidentyfikować id param (/albums/23453243
) w porównaniu z querystringiem (/albums/artwork?artist=artistName&title=albumTitle
) i odpowiednio wykonać trasę, ale tak się nie wydaje?
Tak, druga droga to sposób, w jaki TJ Holowaychuk (twórca Expressu) wykorzystuje w swoich przykładach: https://github.com/visionmedia/express/blob/master/examples/route-separation/index.js#L29 – verybadalloc