2016-03-08 7 views
8

Ho un'API REST di ASP.NET attiva e in esecuzione in Azure. Da un vecchio progetto di .NET 4.5 in Visual Ho generato un cliente utilizza questa opzione di menu:Opzione "Client API REST" in Visual Studio per progetti ASP.NET Core?

Old .NET 4.5 project

Ma quando creo un (5 ASP.NET) progetto nuovo ASP.NET Core e vogliono generare il client non esiste tale possibilità:

New ASP.NET Core project

Qual è il modo previsto per generare il cliente per il mio API REST in progetti ASP.NET core?

+0

Questo non risponderà alla tua domanda, ma dovresti dare un'occhiata a AutoRest. –

risposta

4

Su ASPNET Core 1.0 l'approccio (almeno al momento, le cose potrebbero cambiare) è quello di utilizzare Swagger per generare la documentazione dell'API REST e una volta fatto, è possibile utilizzare AutoRest per generare automaticamente un client in più lingue.

Per utilizzare Swagger in un App core, aggiungere nel file projects.json:

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

Poi nel file Startup.cs, è possibile aggiungere l'inizializzazione:

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 genererà un URL con contenuto "leggibile" in http://yourdomain/swagger/ui/index.html. UseSwaggerGen genererà il file swagger.json in: http://yourdomain/swagger/v1/swagger.json.

Infine, è necessario per decorare i vostri metodi di raccontare Swagger che tipo di uscita esse offrono (l'ingresso è rilevato automaticamente), con l'aggiunta di qualcosa di simile a:

[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); 
} 

speriamo vi sia utile eliminare le cose.

AGGIORNAMENTO: per generare il cliente con AutoRest basta andare al prompt dei comandi (con installato AutoRest) e individuare la cartella di progetto, quindi digitare:

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

Questo creerà una cartella "generato" all'interno del tuo progetto con tutti i file e una classe proxy che puoi usare anche nel tuo file Startup.cs e definire Dependency Injection.

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

Salve, il progetto che contiene l'API è già attivo e funzionante. Sta usando Swagger, e tutto va bene. Il problema si verifica quando il consumer CLIENT è un progetto ASP.NET Core. Nei vecchi progetti VS potrei indirizzarlo al mio file swagger esistente, ma non posso farlo nella GUI per i progetti ASP.NET Core. Daremo un'occhiata a AutoRest e vediamo cosa mi dà. –

+1

Quindi AutoRest funzionerà, stiamo utilizzando API REST create con ASP.NET Core distribuite come App di Azure API e consumandole su progetti ASP.NET Core MVC distribuiti come App Web di Azure e funziona immediatamente. Non c'è più alcun componente GUI, forse in futuro verrà aggiunto, ASP.NET Core è troppo nuovo e cambierà costantemente, gli strumenti potrebbero avere problemi a tenere il passo. –

+0

Ho aggiunto codice di esempio alla risposta. –