You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 15:27:19