Recibo un error 404 para una ruta de búsqueda a pesar de que las rutas definidas de manera similar funcionan bien. Estoy tratando de buscar una publicación a través de su título y/o etiquetas. Aquí están mis rutas definidas en el backend:
const router = express.Router(); router.get("/", getPosts); router.get("/:id", getPost); router.get("/search", getPostsBySearch); router.post("/", auth, createPost); router.patch("/:id", auth, updatePost); router.patch("/:id/likePost", auth, likePost); router.delete("/:id", auth, deletePost); export default routerAquí está mi acción para buscar una publicación:
export const getPostsBySearch = (searchQuery) => async (dispatch) => { try { dispatch({ type: "START_LOADING" }); const { data } = await api.fetchPostsBySearch(searchQuery); dispatch({ type: "FETCH_BY_SEARCH", payload: data }); dispatch({ type: "END_LOADING" }); } catch (error) { console.log(error); } }Y aquí está el archivo api exportando rutas a la acción:
const API = axios.create({ baseURL: "http://localhost:5000" }); export const fetchPosts = (page) => API.get(`/posts?page=${page}`); export const fetchPost = (id) => API.get(`/posts/${id}`); export const fetchPostsBySearch = (searchQuery) => API.get( `/posts/search?searchQuery=${searchQuery.search || "none"}&tags=${ searchQuery.tags }` );Tenía la ruta :id en la parte superior de la ruta de búsqueda, por lo que estaba leyendo /buscar como una identificación, por lo que en lugar de
router.get("/", getPosts); router.get("/:id", getPost); router.get("/search", getPostsBySearch);debería ser
router.get("/", getPosts); router.get("/search", getPostsBySearch); router.get("/:id", getPost);router.get("/search", getPostsBySearch); // Route you mentioned but you were using `/posts/search` export const fetchPostsBySearch = (searchQuery) => API.get( `/search?searchQuery=${searchQuery.search || "none"}&tags=${ searchQuery.tags }` );