javascript - 区分控制器的 2 条路由(NestJS)
问题描述
编辑:当我将 @Get('/random') 移动到其他 2 条路线上方时,它正在工作......奇怪
我正在做一个 NestJS 服务器,它只获取 Breaking Bad API 的一些路由,并在服务器的路由中显示 JSON,
我想创建 3 条路线:
- 1 返回节目所有字符的 JSON (/characters/all)
- 1 返回节目单个字符的 JSON (/characters/:id)
- 1 返回节目随机字符的 JSON (/character/random)
2 条第一条路线正在运行,但我无法获得最后一条, 我收到一条错误 500,上面写着 Error: Request failed with status code 500 并且目标网址是 'https://www.breakbadapi.com/api/字符/随机',我不知道为什么它是'字符'而不是'字符'
这是我的代码:
characters.controller.ts
import { Controller, Get, Post, Body, Param } from '@nestjs/common';
import { CharactersService } from './characters.service';
@Controller('characters')
export class CharactersController {
constructor(private readonly charactersService: CharactersService) {}
@Get('/all')
getAll() {
return this.charactersService.getAll();
}
@Get(':id')
getOne(@Param('id') id: string) {
return this.charactersService.getOne(id);
}
@Get('/random')
getRandom() {
return this.charactersService.getRandom();
}
}
characters.service.ts
import axios from "axios";
import { Injectable } from '@nestjs/common';
@Injectable()
export class CharactersService {
getAll() {
return axios.get(`${process.env.ENDPOINT_BASE_URL}/characters`, {
params: {
limit: null,
offset: null,
name: ""
}
}).then(function (response) {
return response.data;
})
.catch(function (error) {
console.log(error);
});
}
getOne(id: string) {
return axios.get(`${process.env.ENDPOINT_BASE_URL}/characters/${id}`).then(function (response) {
return response.data;
})
.catch(function (error) {
console.log(error);
});
}
getRandom() {
return axios.get(`${process.env.ENDPOINT_BASE_URL}/character/random`).then(function (response) {
return response.data;
})
.catch(function (error) {
console.log(error);
});
}
}
.env
ENDPOINT_BASE_URL=https://www.breakingbadapi.com/api
解决方案
在 Nest 服务器中定义的路由顺序非常重要。通过@Get(':id')
在@Get('/random')
您切断访问之前,/random
因为底层 HTTP 引擎会将字符串"random"
视为id
for ':id'
。
我不知道为什么它是“字符”而不是“字符”
如上所述,random
被拉入的是一条id
而不是一条路线本身。将@Get('/random')
路线和处理程序移到上面@Get(':id')
应该可以为您解决这个问题。
推荐阅读
- python - 带有棉花糖的 Hybrid_property
- covariance - 关于协方差和逆变的问题
- java - Spring 控制器单元测试抛出 NestedServletException
- javascript - 使用反应我试图在点击更新 aa 值时改变按钮的颜色
- html - 如何在flutter webview中将外部css应用于html渲染
- c# - 使用 Angular 和 C# 为特定客户端实现 SignalR 通知
- java - 如何将地图中的值与阈值进行比较并将大于最小阈值的值放入集合中
- javascript - 使用 HTML5 播放器以角度 8 显示流视频
- python - 使用 python 将文件加载到 Azure 文件存储
- nginx - 反向代理到使用 NGINX 映射到 URL 路径的两个不同服务器