TODO

Rest API design

基礎學習內容

以下是我用C#和Asp.Net core進行後端開發的學習紀錄。

  1. C# basic

  2. ASP.NET Core
    ASP.NET Core Full Course For Beginners (youtube.com)

    1. Middleware
    2. Dependency injection
    3. controller & 基本的api routing design
    4. 如何讀取appsettings.json
  3. Api design, architecture: controller, services, repository

  4. 常見的網站攻擊: CSRF, XSS

  5. SQL server & EF core

  6. Unit testing (xUnit + Moq)

    • 困難點:如果沒有對app做分層,會很難測試,正確的單元測試會集中在service的部分
    • 為什麼要寫測試?
  7. Kubernetes
    Kubernetes Crash Course for Absolute Beginners [NEW] (youtube.com)
    困難點:

    • 理解每個k8s components在做什麼?secret, configmap, deployment, services
    • 理解service要怎麼把target port對應到pod,然後deployment是怎麼找到個別的pod的?(keyword: matchLabels & labels & nodeport)
  8. GitLab CI/CD + Argo CD
    GitLab CI CD Tutorial for Beginners [Crash Course] (youtube.com)
    ArgoCD Tutorial for Beginners | GitOps CD for Kubernetes (youtube.com)
    困難點: Docker in docker才能push to docker hub, 然後ci pipeline要能夠修改manifest file才能觸發argocd

  9. App observability

  10. Git/GitHub/GitLab完全教程(包括Git底层原理) | Udemy

  11. Api Authentication & Authorization 基本觀念

  12. 如何使用HttpClient呼叫其他服務

困難點

  1. DB design (constraint, index)
  2. Api design, architecture: controller, services, repository (上面的第三點)
  3. 框架的運作原理
    我大致上知道用某些code可以設定某些功能,但我不太懂框架到底是怎麼運作的,導致我寫不出這些code。基本上只是框架的user,我想要學習更底層的東西該怎麼做。舉個比較specific的例子,我不知道這段code背後是怎麼運作的,只知道我這樣設定就會這些功能
       // AddOpenTelemetry: Registers an IHostedService to automatically 
       // start tracing and/or metric services in the supplied IServiceCollection
       // and then returns an OpenTelemetryBuilder class.
       appBuilder.Services.AddOpenTelemetry() 
           .ConfigureResource(builder => builder.AddService(serviceName: "MyService")) 
           .WithTracing(builder => builder.AddConsoleExporter()) 
           .WithMetrics(builder => builder.AddConsoleExporter());