Kik*_*sen 6 .net asp.net-mvc .net-core
目前我正在构建许多小型API.其中许多项目共享一些基本的控制器逻辑.有没有办法将它们添加到nuget包中,并在启动时使用它们?
例如.喜欢添加Mvc:
IApplicationBuilder app;
....
app.UseMvc;
app.UseBasicApiVersionController();
Run Code Online (Sandbox Code Playgroud)
我们的想法是在所有微服务中都有版本端点.
例如:
http:// url/version
返回{"version":"1.0.0"}
如何将其变为nuget包?
因此,所有开发人员只需添加1行代码即可将此端点添加到其微服务中?我们正在使用dotnet核心.
不要自己创建nuget包:)
我对入门的猜测类似于:
public static IApplicationBuilder UseBasicApiVersionController(this IApplicationBuilder app)
{
if (app == null)
throw new ArgumentNullException("app");
..... // What should I do?
return app;
}
Run Code Online (Sandbox Code Playgroud)
*编辑:
如果您将一个控制器添加到nuget包项目,它将被自动检测.但这不是我想要的功能.
我可能有10个需要该控制器的服务.虽然有1-2个服务只需要其他版本控制逻辑.例如.面向App的客户不应该有"/ version"端点.
这就是为什么我想在启动时使用app.UseBasicApiVersionController();
小智 0
如果只是为了版本,您可以添加共享扩展或返回版本的中间件。
public class VersionMiddleware: OwinMiddleware
{
private static readonly PathString Path = new PathString("/version");
private OwinMiddleware Next;
public VersionMiddleware(OwinMiddleware next) : base(next)
{
Next = next;
}
public async override Task Invoke(IOwinContext context)
{
if (!context.Request.Path.Equals(Path))
{
await Next.Invoke(context);
return;
}
var version = Assembly.[HowToGetYourVersionAsAnObject]
context.Response.StatusCode = (int)HttpStatusCode.OK;
context.Response.ContentType = "application/json";
context.Response.Write(JsonConvert.SerializeObject(responseData));
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
190 次 |
| 最近记录: |