当前位置: 首页 > 知识库问答 >
问题:

不显示ASP.NET API的控制器/路由的大摇大摆的UI

丌官子安
2023-03-14
public class WebApiApplication : HttpApplication
{
    protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();
        GlobalConfiguration.Configure(WebApiConfig.Register);
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
    }
}
public class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { id = UrlParameter.Optional }
        );
    }
}
[RoutePrefix("v1/controller")]
public class TestController : ApiController
{
    [Route("client")]
    [HttpPut]
    public HttpResponseMessage CreateClient([FromUri] string id)
    {
        return new HttpResponseMessage(HttpStatusCode.OK);
    }

    [Route("portfolio")]
    [HttpPost]
    public IResponseItem<int> CreatePortfolio([FromUri] string id)
    {
        return new ResponseItem<int>
        {
            StatusCode = HttpStatusCode.Created,
            Message = "Portfolio successfully created",
            Item = 12
        };
    }
}
public class SwaggerConfig
{
    public static void Register()
    {
        var thisAssembly = typeof(SwaggerConfig).Assembly;

        GlobalConfiguration.Configuration
            .EnableSwagger(c =>
                {
                    c.SingleApiVersion("v1", "WebAPI");
                })
            .EnableSwaggerUi(c =>
                {
                });
    }
}

我是新手所以我可能错过了什么

共有1个答案

谷翰飞
2023-03-14

首先,您似乎在RoutePrefix部分犯了一个错误。如果您的意思是定义v1/controller以在路径中动态地使用控制器的名称,那么应该将[]围绕在它周围,如下所示:

[RoutePrefix("v1/[Controller]")]

关于注册的事。您需要从代码中删除{}。您的代码应该如下所示:

 GlobalConfiguration.Configuration
            .EnableSwagger(c =>c.SingleApiVersion("v1", "WebAPI"))
            .EnableSwaggerUi();

我建议将swagger直接注册到application_start()部分。您的最终代码应该如下所示:

public class WebApiApplication : HttpApplication
{
    protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();
        GlobalConfiguration.Configuration
          .EnableSwagger(c => c.SingleApiVersion("v1", "title of your api"))
          .EnableSwaggerUi();
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
    }
}
 类似资料:
  • 我们在我们的泽西应用程序中使用了@Role允许注释来限制用户对应用编程接口某些部分的访问。我们如何在SwaggerUI中显示这些信息? 到目前为止,我已经用@ApiOperation注释了方法以显示in/out参数,并尝试使用@Authorization/@AuthorizationScope,但我只为我们不使用的oauth2显示了它。最接近out case的是ApiKeyAuthDefiniti

  • 我有这个控制器和操作方法: 下面是模型: 我需要使用<code>Location</code>作为URL中的查询参数名称,以便按预期到达endpoint。 例如< code > http://localhost/API/Appointment/Company/available slots?位置=SYD 然而,当我查看Swagger页面时,该参数被称为<code>Model。位置,这让我的API的

  • 我们有一个。NET解决方案,有两个项目: null 当将Swagger UI添加到API项目(不是首选解决方案)时,它根本不起作用,可能是因为自定义控制器选择器 然而,我认为我遗漏了一些明显的东西,因为这感觉像是我们遗漏的一个非常基本的配置设置

  • 有没有人用spring-data-rest配置了swagger。我知道swagger有DocumentationConfig类,它扫描所有spring-mvc请求映射。但是,如何将其用于spring-data-rest,因为没有定义显式的请求映射。非常感谢在这方面的任何帮助。此外,我还想知道,是否有其他支持Spring-Data-REST的文档框架。

  • 我成功地在Spring boot应用程序上应用了swagger ui,并能够使用http://localhost:8181/swagger-用户界面。html 过了一段时间,我继续写我的申请,现在它不见了。我没有拿走任何罐子。我添加了一个应用程序启动类,当我在Wildfly 10上部署时,该类用于在启动时加载一些东西。 即使我尝试用tomcat将其作为Spring boot应用程序运行,也无法运行

  • 我有一个java项目(tomcat webapp)和一些REST Api。我想为他们生成大摇大摆的文档。我从本教程(github)开始。我没有maven我们使用蚂蚁任务。我加入了swagger-annotations-1.5.0。jar和所有随swagger jaxrs jar 1.5.0版本附带的jar(如果有用的话,我可以包括一个完整的列表),我已经注释了一些方法,我有一个如下的配置类: }