Node.js 개발자가 .NET을 다시 시도하다
내가 익숙한 모든 미세한 제어가 바로 거기에 있습니다! 힘든 MVC도 없고, 더 이상 면도칼 페이지로 머리를 맞대지 않고 일반 GET 및 POST 요청만 있으면 됩니다.
간단한 익스프레스 API로 평소에 하는 일을 복제하는 것이 얼마나 어려운지 알고 싶었습니다.
예! 위의 모든 것에 대한 대답은 '예'였습니다! 나는 충격 받았다. .NET으로 돌아가려고 시도한 내 경험은 평소에 자전거를 타고 원하는 곳으로 가던 사람이 갑자기 기차 여행으로 제한되는 것과 같았습니다. 이제 자전거를 되찾았습니다!
위의 항목에 대한 세부 정보는 다음과 같습니다.
1) 요청 경로 매개변수를 사용하는 것은 경로에 {placeholders}를 추가하는 것만큼 간단합니다.
app.MapGet("/hello/{name}", (string name) => $"Hello {name}!");
2 및 3) 요청 및 응답 개체는 HttpContext 바인딩을 통해 사용할 수 있습니다. JSON 본문의 구문 분석은 매개변수 바인딩을 통해 자동으로 발생합니다.
app.MapPost("/thing", Thing (HttpContext context, Thing thang) => {
Console.WriteLine(context.Request.Method);
return thang;
});
4) 미들웨어는 익스프레스와 매우 흡사합니다.
app.Use(async (context, next) =>
{
Console.WriteLine("Halo Fren - I iz Middleware! " + context.Request.Path);
context.Items.Add("user", "Doge");
await next.Invoke();
});
5) 핸들러 내의 비동기 HTTP 요청은 훌륭하고 쉬우며 자동으로 JSON을 구문 분석합니다.
app.MapGet("/proxy", async Task<Todo> (HttpContext context) => {
Console.WriteLine("Middleware says I am " + (string)context.Items["user"]);
var client = new HttpClient();
var todo = await client.GetFromJsonAsync<Todo>("https://jsonplaceholder.typicode.com/todos/1");
return todo;
}).WithTags("Proxy"); // Sets swagger tag
6) 정적 파일 제공은 한 줄짜리입니다.
app.UseStaticFiles();
7) HTML을 제공하기 위해 잘 관리되는 것을 발견했습니다Handlebars.NET.
app.MapGet("/html", async context =>
{
var source = System.IO.File.ReadAllText(@"./views/demo.html");
var template = Handlebars.Compile(source);
var data = new
{
title = "Demo Html",
body = "This is super simple html!"
};
var result = template(data);
await context.Response.WriteAsync(result);
});
8) Swagger는 설정도 매우 쉬웠습니다. 입력 매개 변수 및 출력에 대한 유형을 추가하기 위해 여러 핸들러를 다시 작성해야 했습니다. 그룹을 설정하는 방법도 찾았습니다(위의 #5 코드 참조). 전체 swagger 설정은 demo repo 에 있습니다.
보너스) 이 모든 작업을 수행한 후 프로젝트 템플릿에 dockerfile이 포함되어 있음을 알았습니다. dockerfile을 빌드하고 실행한 첫 번째 시도는 보기에 정말 즐거웠습니다.
Reference
이 문제에 관하여(Node.js 개발자가 .NET을 다시 시도하다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/aaronblondeau/a-nodejs-developer-tries-net-again-143d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)