Modern API Design with ASP.NET Core 2 Building Cross-Platform Back-End Systems

Modern API Design with ASP.NET Core 2 Building Cross-Platform Back-End Systems

Modern API Design with ASP.NET Core 2 Building Cross-Platform Back-End Systems Fanie Reynders Modern API Design with ASP.NET Core 2: Building Cross-Platform Back-End Systems Fanie Reynders Odijk, The Netherlands ISBN-13 (pbk): 978-1-4842-3518-8 ISBN-13 (electronic): 978-1-4842-3519-5 https://doi.org/10.1007/978-1-4842-3519-5 Library of Congress Control Number: 2018935910 Copyright © 2018 by Fanie Reynders Any source code or other supplementary material referenced by the author in this book is available to readers on GitHub via the book’s product page, located at www.apress.com/9781484235188. For more detailed information, please visit http://www.apress.com/source-code. Contents Foreword ����������������������������������������������������������������������������������������������������������������� ix Introduction����������������������������������������������������������������������������������������������������������� xvii Chapter 1: API Design Demystified ��������������������������������������������������������������������������� 1 The Importance of APIs ����������������������������������������������������������������������������������������������������������������� 1 REST: The Good, Bad, and Ugly������������������������������������������������������������������������������������������������������ 3 Principles of REST ������������������������������������������������������������������������������������������������������������������������� 5 Wrapping Up ��������������������������������������������������������������������������������������������������������������������������������� 7 Chapter 2: Introduction to ASP�NET Core ������������������������������������������������������������������ 9 What Is ASP�NET Core? ���������������������������������������������������������������������������������������������������������������� 10 NET Core vs �NET Framework ������������������������������������������������������������������������������������������������ 11 Why Use ASP�NET Core? �������������������������������������������������������������������������������������������������������������� 11 The �NET Ecosystem �������������������������������������������������������������������������������������������������������������� 12 ASP�NET Core Features ���������������������������������������������������������������������������������������������������������������� 13 Tooling Available for ASP�NET Core ���������������������������������������������������������������������������������������������� 13 Setting Up the Development Environment ���������������������������������������������������������������������������������� 16 A Lap Around the �NET Core CLI �������������������������������������������������������������������������������������������������� 19 Wrapping Up ������������������������������������������������������������������������������������������������������������������������������� 22 Chapter 3: Your First API Application ��������������������������������������������������������������������� 23 Getting Started ���������������������������������������������������������������������������������������������������������������������������� 23 Dependency Injection ������������������������������������������������������������������������������������������������������������������ 29 Application Startup ��������������������������������������������������������������������������������������������������������������������� 30 Creating an Endpoint ������������������������������������������������������������������������������������������������������������������� 33 Wrapping Up ������������������������������������������������������������������������������������������������������������������������������� 36 Chapter 4: Extensibility Architecture ���������������������������������������������������������������������� 37 Hosts and Servers ����������������������������������������������������������������������������������������������������������������������� 37 Creating a Custom Server������������������������������������������������������������������������������������������������������ 41 Middleware ��������������������������������������������������������������������������������������������������������������������������������� 49 Routing ���������������������������������������������������������������������������������������������������������������������������������������� 54 Hosted Services �������������������������������������������������������������������������������������������������������������������������� 57 Wrapping up �������������������������������������������������������������������������������������������������������������������������������� 59 Chapter 5: MVC ������������������������������������������������������������������������������������������������������� 61 The MVC Pattern ������������������������������������������������������������������������������������������������������������������������� 61 MVC in ASP�NET Core ������������������������������������������������������������������������������������������������������������������� 62 Controllers and Actions ��������������������������������������������������������������������������������������������������������������� 64 Model Binding and Validation ����������������������������������������������������������������������������������������������������� 75 Filters ������������������������������������������������������������������������������������������������������������������������������������������ 86 Formatting Responses ���������������������������������������������������������������������������������������������������������������� 89 Application Parts ������������������������������������������������������������������������������������������������������������������������� 93 Wrapping Up ������������������������������������������������������������������������������������������������������������������������������� 94 Chapter 6: The Configuration Model ����������������������������������������������������������������������� 95 Basic Configuration ��������������������������������������������������������������������������������������������������������������������� 96 Configuration Providers �������������������������������������������������������������������������������������������������������������� 99 Strongly Typed Configuration ���������������������������������������������������������������������������������������������������� 106 Working with Changes �������������������������������������������������������������������������������������������������������������� 110 Wrapping Up ����������������������������������������������������������������������������������������������������������������������������� 111 Chapter 7: Logging and Error Handling ���������������������������������������������������������������� 113 Adding Logging ������������������������������������������������������������������������������������������������������������������������� 114 Log Anatomy ����������������������������������������������������������������������������������������������������������������������������� 116 Grouping and Filtering �������������������������������������������������������������������������������������������������������������� 121 Different Logging Providers ������������������������������������������������������������������������������������������������������ 125 Dealing with Exceptions ������������������������������������������������������������������������������������������������������������ 127 Wrapping Up ����������������������������������������������������������������������������������������������������������������������������� 130 Chapter 8: Securing APIs �������������������������������������������������������������������������������������� 131 Authentication & Authorization ������������������������������������������������������������������������������������������������� 132 Protecting Sensitive Data ���������������������������������������������������������������������������������������������������������� 140 Enforcing SSL ���������������������������������������������������������������������������������������������������������������������������� 145 Cross-origin Requests ��������������������������������������������������������������������������������������������������������������� 146 Request Rate Limiting ��������������������������������������������������������������������������������������������������������������� 149 Wrapping Up ����������������������������������������������������������������������������������������������������������������������������� 153 Chapter 9: Bells & Whistles ���������������������������������������������������������������������������������� 155 HATEOAS ����������������������������������������������������������������������������������������������������������������������������������� 155 Versioning ��������������������������������������������������������������������������������������������������������������������������������� 165 Swagger ������������������������������������������������������������������������������������������������������������������������������������ 173 GraphQL ������������������������������������������������������������������������������������������������������������������������������������ 177 Wrapping Up ����������������������������������������������������������������������������������������������������������������������������� 184 Chapter 10: Testing & Debugging ������������������������������������������������������������������������� 185 Why Is Testing

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    240 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us