【问题标题】:T4 Web API C# to Typescript class library [closed]T4 Web API C# 到 Typescript 类库 [关闭]
【发布时间】:2013-10-26 14:19:07
【问题描述】:

我最近询问了 T4 视图模型的 C# 类,但这次有所不同,所以我将其分离到第二个问题中

我想在 typescript 中自动生成客户端库,其中包括每个 Web api 方法的端点,这些方法都装饰有 HttpGet、Post、Put、Delete、Patch 属性。

这将生成 jQuery ajax 调用以与 Web api 调用交互。

有人见过这样的吗?我很想节省一些时间来编写 T4 脚本。

谢谢!

【问题讨论】:

    标签: c# jquery asp.net-web-api typescript t4


    【解决方案1】:

    看起来这个人使用 T4 为他的 Web API 服务生成了一个 TypeScript 代理。 http://galador.net/codeblog/post/2013/11/12/Client-Side-Web-Application-primer.aspx

    但是,如果您的唯一客户端来自浏览器,您可能需要考虑使用 SignalR 来代替此 T4 模板。 https://gist.github.com/robfe/4583549

    还有一些库可以从 CLR 类型生成 TypeScript 定义文件:

    【讨论】:

    • 最终我使用 T4 编写了自己的。很不错的学习体验!然而,这些资源非常好!
    • 您是否在任何地方发布过您的 T4?
    • Typewriter Visual Studio Extension 也可以做到这一点 - frhagn.github.io/Typewriter/index.html
    【解决方案2】:

    尝试使用 Weld:https://weld.codeplex.com/

    您所要做的就是为您的控制器操作添加一个属性,Weld 将创建一个打字稿代理。

    来自他们的网站:

    代替:

     [HttpGet]
     public int Sum(int x,int y)
     {
         return x + y;
     }
    

    并使用 $.ajax

     var url = "/Home/Sum";
     var data = { x: 2 , y: 3};
     $.ajax({
         url: url,
         data: data,
         success: showResult
     });
    

    只需添加一个属性:

    [AjaxMethod]
    

    并在您的打字稿中执行此操作:

    HomeController.prototype.Sum(2, 3, showResult); 
    

    【讨论】:

    • 我不太喜欢 Weld 解决方案。我宁愿构建一个 Visual Studio 扩展,它在保存时使用 Roslyn 解析文档生成打字稿类,所以像这样:[TypeScriptExport("~/typescript/controllers/")] 或只是 [TypeScriptExport("Users" )]。我已经开始着手这个项目,但没有太多时间。如果有人想合作,请告诉我。
    【解决方案3】:

    我目前正在开发一个工具链来解决这个确切的问题:生成用于调用 Web API 控制器的客户端代码。

    可以在 T4 模板、命令行和 Windows GUI 中调用生成器:

    查看http://nswag.org

    【讨论】:

    • 对场外资源或工具的推荐请求在 Stack Overflow 上是题外话。如果你回答了这些问题,你就特别强化了 Stack Overflow 是回答这些问题的好地方的信念。它不是。即使您知道一个好的答案,也请不要回答这些问题,因为大多数答案都是非常固执的(“我个人喜欢......”)。您可以打开问题的标志对话框,并在 off-topic 类别下或help center 中查看完整的关闭原因。您甚至不应该在评论中回答,因为效果类似于实际答案。
    猜你喜欢
    • 2013-10-26
    • 1970-01-01
    • 1970-01-01
    • 2015-01-30
    • 1970-01-01
    • 1970-01-01
    • 2018-02-19
    • 2014-12-17
    相关资源
    最近更新 更多