2017-10-23 4 views
0

私はここからの技術を使用してmicroserviceを書いています: https://www.strathweb.com/2017/01/building-microservices-with-asp-net-core-without-mvc/RequestDelegate機能()

さて、私はコード以降の機能でRequestDelegate(S)内のコードを持つことが可能であるかどうかを知りたいですここはラムダですか?

app.UseRouter(r => 
{ 
    var contactRepo = new InMemoryContactRepository(); 

    r.MapGet("contacts", async (request, response, routeData) => 
    { 
     var contacts = await contactRepo.GetAll(); 
     await response.WriteJson(contacts); 
    }); 

    r.MapGet("contacts/{id:int}", async (request, response, routeData) => 
    { 
     var contact = await contactRepo.Get(Convert.ToInt32(routeData.Values["id"])); 
     await response.WriteJson(contact); 
    }); 

    r.MapGet("contacts/delete/{id:int}", async (request, response, routeData) => 
    { 
     await contactRepo.Delete(Convert.ToInt32(routeData.Values["id"])); 
     var contacts = await contactRepo.GetAll(); 
     await response.WriteJson(contacts); 
    }); 
}); 

コードを新しい呼び出しに組み込む必要があるユニットが既に存在するため、私は質問しています。上記は単なる例である。

答えて

-1

はい、それは次のようになります。

app.UseRouter(r => 
{ 
    var contactRepo = new InMemoryContactRepository(); 

    r.MapGet("contacts", GetContacts); 

    r.MapGet("contacts/{id:int}", GetContact); 

    r.MapGet("contacts/delete/{id:int}", DeleteContact); 
}); 

を...

private async Task GetContacts(HttpRequest request, HttpResponse response, RouteData routeData) 
{ 
    var contact = await contactRepo.Get(Convert.ToInt32(routeData.Values["id"])); 
    await response.WriteJson(contact); 
} 

private async Task GetContact(HttpRequest request, HttpResponse response, RouteData routeData) 
{ 
    var contact = await contactRepo.Get(Convert.ToInt32(routeData.Values["id"])); 
    await response.WriteJson(contact); 
} 

private async Task DeleteContact(HttpRequest request, HttpResponse response, RouteData routeData) 
{ 
    await contactRepo.Delete(Convert.ToInt32(routeData.Values["id"])); 
    var contacts = await contactRepo.GetAll(); 
    await response.WriteJson(contacts); 
} 
関連する問題