2016-03-08 7 views
8

Mam API ASP.NET REST uruchomione na platformie Azure. Ze starszej .NET 4.5 projektu w Visual Mam generowane klienta przy użyciu tej opcji menu:"Klient REST API Client" w Visual Studio dla projektów ASP.NET Core?

Old .NET 4.5 project

Ale gdy tworzę nową ASP.NET rdzeniowy (ASP.NET 5) projekt i chcesz wygenerować klienta nie ma takiej opcji:

New ASP.NET Core project

Jaki jest zamierzony sposób, aby wygenerować dla mojego klienta REST API w projektach ASP.NET podstawowych?

+0

To nie będzie odpowiedź na twoje pytanie, ale powinieneś rzucić okiem na AutoRest. –

Odpowiedz

4

W ASPNET Core 1.0 podejście (przynajmniej teraz może się zmienić) polega na użyciu Swagger do wygenerowania dokumentacji REST API, a kiedy to zrobisz, możesz użyć AutoRest, aby automatycznie wygenerować klienta w kilku językach.

Aby korzystać Swagger w rdzeniu aplikacji, dodać w pliku projects.json:

"dependencies": { 
    ... 
    "Swashbuckle": "6.0.0-rc1-final" 
}, 

Następnie w pliku Startup.cs można dodać inicjalizacji:

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) 
{ 
    //other uses 

    //this generates the swagger.json file 
    app.UseSwaggerGen(); 

    //this is optional, it will generate a visual website for your documentation 
    app.UseSwaggerUi(); 
} 

UseSwaggerUi będzie generował Adres URL z treścią "czytelną dla człowieka" w http://yourdomain/swagger/ui/index.html. UseSwaggerGen wygeneruje plik swagger.json w: http://yourdomain/swagger/v1/swagger.json.

Wreszcie, trzeba ozdobić swoje metody powiedzieć Swagger jaką Output Czy oni oferują (wejście jest automatycznie wykrywany), dodając coś takiego:

[Produces(typeof(MyItemClass))] 
[SwaggerResponse(System.Net.HttpStatusCode.OK, Type = typeof(MyItemClass))] 
[HttpGet("{id}")] 
public IActionResult Get(string id) 
{ 
    if (string.IsNullOrEmpty(id)) 
    { 
     return HttpBadRequest(); 
    } 
    var item = _service.GetRecord(id); 
    if (item == null) 
    { 
     return HttpNotFound(); 
    } 
    return new ObjectResult(item); 
} 

Nadzieja pomaga wyczyszczenie rzeczy.

UPDATE: Aby wygenerować klientowi AutoRest prostu przejść do wiersza polecenia (z zainstalowanym AutoRest) i przejdź do folderu projektu, a następnie wpisz:

autorest -Namespace YourDesiredNamespace -Input http://yourapi/swagger/v1/swagger.json 

Spowoduje to utworzenie "generated" Folder wewnątrz twojego projektu ze wszystkimi plikami i klasą proxy możesz nawet użyć w pliku Startup.cs i zdefiniować Dependency Injection.

public void ConfigureServices(IServiceCollection services) 
{ 
//.... 
services.AddSingleton<IYourApi>(provider => 
{ 
    return new YourAPI(new Uri("http://yourapi")); 
}); 
} 
+1

Witam, projekt zawierający API jest już uruchomiony. Używa Swagger i wszystko jest w porządku. Problem polega na tym, że konsumujący KLIENT jest projektem ASP.NET Core. W starszych projektach VS mógłbym wskazać mój istniejący plik przekreślony, ale nie mogę tego zrobić w GUI dla projektów ASP.NET Core. Rzucę okiem na AutoRest i zobaczę, co mi to daje. –

+1

Następnie AutoRest zadziała, korzystamy z API REST stworzonego przy użyciu ASP.NET Core wdrożonego jako aplikacje API Azure i korzystającego z nich w projektach ASP.NET Core MVC wdrożonych jako aplikacje internetowe Azure i wszystko działa od razu po wyjęciu z pudełka. Nie ma już komponentu GUI, może w przyszłości zostanie dodany, ASP.NET Core jest zbyt nowy i będzie się ciągle zmieniać, Tooling może mieć problem z utrzymaniem. –

+0

Dodałem przykładowy kod do odpowiedzi. –