ABP框架代理命名规则咨询:BloodGroup实体代理调用失败
ABP 动态代理命名规范与问题解决指南
一、正确的代理调用方式
你当前的问题是使用了错误的代理路径,针对Swagger中显示的https://localhost:44373/api/app/blood-group API,正确的代理调用应为:
opyt.schoolManager.bloodGroup.getList()
二、ABP 动态代理核心命名规则
ABP的JavaScript动态代理严格遵循以下约定生成:
- 根命名空间:对应你的模块标识(如
opyt.schoolManager),由项目模块配置决定 - 服务节点:将控制器的kebab-case路由名称转换为camelCase单数形式
- 例如:控制器路由
blood-group→ 代理节点bloodGroup;路由relationships→ 代理节点relationships(对应你能正常调用的案例)
- 例如:控制器路由
- 方法名:自动将服务类中的
Async后缀方法转换为小驼峰格式- 例如:服务方法
GetListAsync→ 代理方法getList
- 例如:服务方法
三、自定义代理命名/路由的方法
如果默认约定不符合需求,可通过以下方式调整:
1. 自定义控制器路由
在你的BloodGroupAppService类上添加[ControllerName]特性,指定自定义路由,从而修改代理节点:
[ControllerName("blood-groups")] public class BloodGroupAppService : ApplicationService, IBloodGroupAppService { // 服务方法实现 }
此时Swagger API路径变为/api/app/blood-groups,对应的代理调用为opyt.schoolManager.bloodGroups.getList()
2. 生成静态代理脚本
使用ABP CLI手动生成静态代理文件,可直接修改代理路径和方法名:
abp generate-proxy -t js -u https://localhost:44373/
将生成的脚本引入Razor页面即可使用自定义后的代理。
3. 绕过代理直接调用API
若代理调用仍有问题,可直接通过fetch调用API:
fetch('https://localhost:44373/api/app/blood-group', { method: 'GET', headers: { 'Authorization': 'Bearer ' + abp.auth.getToken(), 'Content-Type': 'application/json' } }) .then(res => res.json()) .then(data => { /* 处理返回数据 */ });
内容的提问来源于stack exchange,提问作者Amour Rashid
相关产品推荐
相关产品推荐

