ApiEndpoints icon indicating copy to clipboard operation
ApiEndpoints copied to clipboard

Visual Studio 2022 Endpoint Explorer Integration

Open cmarkwick365 opened this issue 1 year ago β€’ 15 comments

ApiEndPoints does not appear to work with VS 2022 Endpoint Explorer. Is it possible to enable this feature or is there a way to get it working out of the box?

cmarkwick365 avatar Jun 28 '23 14:06 cmarkwick365

Hmm, the feature is still in preview, right? https://devblogs.microsoft.com/visualstudio/web-api-development-in-visual-studio-2022/

I haven't used it myself but in the example shown in that article it's working with minimal API endpoints, though they claim it will also work with Controller-based endpoints. This library depends on Controllers, so any feature that discovers Controller-based endpoints should work with it. Do you have a sample you can share? Does the feature work with a vanilla controller class, but not with one that inherits from one of this package's base endpoint classes (which in turn inherit from controllers)?

ardalis avatar Jun 28 '23 14:06 ardalis

Thanks for your fast response Steve. I believe it's out of preview in VS 17.6, I think it relies upon the [ApiController] attribute. This article may help: https://dev.to/andytechdev/step-by-step-guide-testing-http-endpoints-in-visual-studio-2022-using-endpoints-explorer-fpb

cmarkwick365 avatar Jun 28 '23 15:06 cmarkwick365

Hmm, well we have that attribute: https://github.com/ardalis/ApiEndpoints/blob/main/src/Ardalis.ApiEndpoints/EndpointBase.cs#L8

ardalis avatar Jun 28 '23 15:06 ardalis

I suspect it also utilizes the Http* attributes.

cmarkwick365 avatar Jun 28 '23 15:06 cmarkwick365

Apparently the endpoints explorer menu option only appears if you first select a web project in solution explorer...

ardalis avatar Jun 28 '23 15:06 ardalis

I can open the "Endpoints Explorer" window and it shows the api project. However, no endpoints are discovered.

emilun avatar Jul 05 '23 07:07 emilun

It may not be related, but for me, Endpoints Explorer only picks up if the controller class has [ApiController], but it doesn't pick up if it inherits a custom base controller that has [ApiController] attribute:

WORKS:

    [ApiController]
    [Route("accounts")]
    public class AccountController : ApiControllerBase

DOESN'T WORK:

    [Route("accounts")]
    public class AccountController : ApiControllerBase
    [ApiController]
    [Route("api/[controller]")]
    public abstract class ApiControllerBase : ControllerBase

I am using Visual Studio 2022 17.6.2 Professional

Edgaras91 avatar Aug 14 '23 10:08 Edgaras91

Yeah, it definitely still has a ways to go to catch all of the endpoints in the project. They could also leverage the swagger file from the running project as a possible way to build their list of endpoints. Probably a good idea to leave feedback for them in their own repo and/or on social media where they'll see it (copy @visualstudio). In the meantime I don't think it hurts anything if you add "extra" [ApiController] attributes to endpoints just for the sake of discoverability for the tool. I haven't tried it, though.

ardalis avatar Aug 15 '23 22:08 ardalis

I've found that the Endpoints Explorer window only recognizes literal strings for routes. For example, the following declaration shows up in the Endpoints Explorer window:

public static class MyEndpoints {
  public static void MapMyEndpoints(this IEndpointRouteBuilder routes) {
    var group = routes.MapGroup("api/test");
    group.MapGet("/{id}", TestGetMethod);
}}

However, the following is invisible to the Endpoints Explorer window:

public static class MyEndpoints {
  private const string ApiBase = "api/Test";
  public static void MapMyEndpoints(this IEndpointRouteBuilder routes) {
    var group = routes.MapGroup(ApiBase);
    group.MapGet($"{ApiBase}/{id}", TestGetMethod);
}}

johnholliday avatar Sep 09 '23 17:09 johnholliday

Definitely seems like a bug on their end. Have you reported it with the feedback icon in VS?

ardalis avatar Sep 11 '23 17:09 ardalis

Pinged them here: https://twitter.com/ardalis/status/1701282105005646180

ardalis avatar Sep 11 '23 17:09 ardalis

Thanks for making me (in)famous Steve πŸ‘
Lol

cmarkwick365 avatar Sep 12 '23 13:09 cmarkwick365

Thanks (although I’m not feeling very β€˜X’ lately). I did send feedback via VS, so let’s see.

Get Outlook for iOShttps://aka.ms/o0ukef


From: Chris Markwick @.> Sent: Tuesday, September 12, 2023 9:54:28 AM To: ardalis/ApiEndpoints @.> Cc: John Holliday @.>; Comment @.> Subject: Re: [ardalis/ApiEndpoints] Visual Studio 2022 Endpoint Explorer Integration (Issue #196)

Thanks for making me (in)famous Steve πŸ‘

β€” Reply to this email directly, view it on GitHubhttps://github.com/ardalis/ApiEndpoints/issues/196#issuecomment-1715773828, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ABIMPXCTR7PL4BROQXLP3B3X2BSRJANCNFSM6AAAAAAZXGSBNM. You are receiving this because you commented.Message ID: @.***>

johnholliday avatar Sep 12 '23 13:09 johnholliday

Yeah reports via this method are more likely to be acted upon, it seems: https://learn.microsoft.com/en-us/visualstudio/ide/how-to-report-a-problem-with-visual-studio?view=vs-2022

ardalis avatar Sep 12 '23 15:09 ardalis

Hi.

I found the Visual Studio feedback item @johnholliday reported regarding discovering non-literal strings for routes here: https://developercommunity.visualstudio.com/t/Endpoints-Explorer-fails-to-recognize-no/10463837

This issue is still marked as "Under Consideration"

I found a Visual Studio feedback item related to the issue @cmarkwick365 and @Edgaras91 encountered, regarding ApiControllerBase class inheritance, and the [ApiController] attribute here: https://developercommunity.visualstudio.com/t/Bug-in-Endpoints-Explorer:-Controllers-n/10359760

This issue is marked as "Fixed In: Visual Studio 2022 version 17.7".

ramiabughazaleh avatar Nov 17 '23 23:11 ramiabughazaleh