Skip to content

服务端Api开发

什么是服务端Api?

活字格的服务端API类似于网站的控制器,可以声明Post或Get或 Schedule Api

在活字格中如何开发自定义服务端Api?

  1. 在自定义插件项目的解决方案点击右键,在右键菜单中选择 “添加”-> “现有项目”
    1670684120600-bb55ff70-bc9a-4de1-bc71-7f25ce446849.png
  2. 找到当前项目中的“MyPlugin.Server.csproj”并选中,添加自定义中间件的模板工程
    1670685256598-36988f61-9ef0-4499-bfe2-83a1c6793e63.png
  3. 添加后可以看到,在MyPlugin.Server工程里有两个文件,MyPluginMiddleware.cs 和 MyPluginMiddlewareInjector.cs,** 删除**这两个文件,添加一个ServerApi 文件
    1670685437732-462ae6ca-cd2d-4ef8-8c9f-9d254da43a93.png
    修改后:
    1671952315388-2efabee8-5197-4d04-af5e-32883db4f4f5.png
  4. 在MyServerApi.cs 添加以下代码
csharp
using GrapeCity.Forguncy.ServerApi;
using Microsoft.AspNetCore.Http;
using System.Threading.Tasks;

namespace MyPlugin.Server
{
    public class MyServerApi : ForguncyApi
    {
        [Get]
        public async Task MyTestApi()
        {
            await this.Context.Response.WriteAsync("This is my api");
        }
    }
}
  1. 代码解释:定义了一个MyServerApi 类,声明了一个 Get Api,被调用时返回字符串 “This is my api”,如果标注 “PostAttribute”可以声明Post请求。
  2. 编译工程

如何让活字格加载自定义服务端API

活字格有三种加载自定义服务端API的方式

通过“自定义Web Api ”上传服务端API DLL

1671952610303-684f5f4e-ff20-4ce8-873d-edd63b8cdb75.png 测试, 运行网站,输入在 Forguncy 后输入 /customapi/myserverapi/mytestapi 访问
1671952595958-d94df48d-3ea3-43fb-9a7f-098fb1751699.png

给插件添加自定义服务端API
  1. 在MyPlugin工程中,右键点击依赖项,选择“添加项目引用”
    1670688129275-1ff01ced-3d30-4d0f-99ce-af462c4f70c1.png
  2. 选择 MyPlugin.Server 点击确定
    1670688181311-595cb8f2-70a2-42bc-bb42-a13ef003a142.png
  3. 修改 PluginConfig.json, 添加 serverApiAssembly 配置,值为 MyPlugin.Server.dll
    1671952867811-007b49c8-a26f-4b1c-9d65-d026a1060da2.png
    1. 完成后,只要网站使用了任意插件,都会加载自定义服务端API
拷贝自定义服务端API到活字格服务器的指定目录
  1. 把 MyPlugin.Server.dll 拷贝到 C:\Users\Public\Documents\ForguncyServer\【应用名】\MiddlewareInjector 目录下
  2. 重启后应用会自动加载 MiddlewareInjector 目录下的自定义服务端API

次方法的好处是不需要重新发布应用即可替换自定义服务端API

更新: 2022-12-25 15:26:42
原文: https://www.yuque.com/robert-bh51n/ea8l6c/tg6z414ua34yen79