Practical API Architecture and Development with Azure and AWS Design and Implementation of APIs for the Cloud — Thurupathan Vijayakumar Practical API Architecture and Development with Azure and AWS Design and Implementation of APIs for the Cloud Thurupathan Vijayakumar Practical API Architecture and Development with Azure and AWS Thurupathan Vijayakumar Colombo, Sri Lanka ISBN-13 (pbk): 978-1-4842-3554-6 ISBN-13 (electronic): 978-1-4842-3555-3 https://doi.org/10.1007/978-1-4842-3555-3 Library of Congress Control Number: 2018946567 Copyright © 2018 by Thurupathan Vijayakumar This work is subject to copyright. All rights are reserved by the Publisher, whether the whole or part of the material is concerned, specifically the rights of translation, reprinting, reuse of illustrations, recitation, broadcasting, reproduction on microfilms or in any other physical way, and transmission or information storage and retrieval, electronic adaptation, computer software, or by similar or dissimilar methodology now known or hereafter developed. Trademarked names, logos, and images may appear in this book. Rather than use a trademark symbol with every occurrence of a trademarked name, logo, or image we use the names, logos, and images only in an editorial fashion and to the benefit of the trademark owner, with no intention of infringement of the trademark. The use in this publication of trade names, trademarks, service marks, and similar terms, even if they are not identified as such, is not to be taken as an expression of opinion as to whether or not they are subject to proprietary rights. While the advice and information in this book are believed to be true and accurate at the date of publication, neither the authors nor the editors nor the publisher can accept any legal responsibility for any errors or omissions that may be made. The publisher makes no warranty, express or implied, with respect to the material contained herein. Managing Director, Apress Media LLC: Welmoed Spahr Acquisitions Editor: Nikhil Karkal Development Editor: James Markham Coordinating Editor: Divya Modi Cover designed by eStudioCalamar Cover image designed by Freepik (www.freepik.com) Distributed to the book trade worldwide by Springer Science+Business Media New York, 233 Spring Street, 6th Floor, New York, NY 10013. Phone 1-800-SPRINGER, fax (201) 348-4505, e-mail [email protected], or visit www.springeronline.com. Apress Media, LLC is a California LLC and the sole member (owner) is Springer Science + Business Media Finance Inc (SSBM Finance Inc). SSBM Finance Inc is a Delaware corporation. For information on translations, please e-mail [email protected], or visit http://www.apress. com/rights-permissions. Apress titles may be purchased in bulk for academic, corporate, or promotional use. eBook versions and licenses are also available for most titles. For more information, reference our Print and eBook Bulk Sales web page at http://www.apress.com/bulk-sales. 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/978-1-4842-3554-6. For more detailed information, please visit http://www.apress.com/source-code. Printed on acid-free paper This book is dedicated to my loving parents and friends. Table of Contents About the Author ���������������������������������������������������������������������������������ix About the Technical Reviewer �������������������������������������������������������������xi Acknowledgments �����������������������������������������������������������������������������xiii Introduction ����������������������������������������������������������������������������������������xv Chapter 1: Practical Introduction to APIs ���������������������������������������������1 APIs: A Practical Introduction ��������������������������������������������������������������������������������2 Programmable Language Constructs ��������������������������������������������������������������2 Systems of Data & Operations Flow ����������������������������������������������������������������5 API Economy ���������������������������������������������������������������������������������������������������������6 APIs in the Public Sector ���������������������������������������������������������������������������������������9 G2C: Government to Citizens ���������������������������������������������������������������������������9 G2B: Government to Business �����������������������������������������������������������������������10 G2G: Government to Government ������������������������������������������������������������������11 Summary�������������������������������������������������������������������������������������������������������������11 Chapter 2: API Strategy and Architecture ������������������������������������������13 API Strategy ��������������������������������������������������������������������������������������������������������14 API Strategy Use Case �����������������������������������������������������������������������������������17 API Value Chain ���������������������������������������������������������������������������������������������������18 API Architecture ��������������������������������������������������������������������������������������������������19 API Management �������������������������������������������������������������������������������������������������22 Summary�������������������������������������������������������������������������������������������������������������24 v TTaabbllee ooff CCoonnTTeennTTss Chapter 3: API Development ���������������������������������������������������������������25 API Development Considerations ������������������������������������������������������������������������25 Explicit Parameters ���������������������������������������������������������������������������������������26 Avoid Consumer-Commanded Endpoints ������������������������������������������������������26 Documentation ����������������������������������������������������������������������������������������������27 Security ���������������������������������������������������������������������������������������������������������27 Versioning ������������������������������������������������������������������������������������������������������27 API Development Standards��������������������������������������������������������������������������������28 HTTP Verbs ����������������������������������������������������������������������������������������������������28 HTTP Status Codes ����������������������������������������������������������������������������������������29 Error Handling �����������������������������������������������������������������������������������������������31 URI Syntax �����������������������������������������������������������������������������������������������������33 Versioning ������������������������������������������������������������������������������������������������������34 Kick-Start API Development ��������������������������������������������������������������������������������34 Implementation: ASP�NET Core ����������������������������������������������������������������������35 Setting Up Swagger ���������������������������������������������������������������������������������������45 Run the API and Swagger ������������������������������������������������������������������������������48 Team Orientation in API Development �����������������������������������������������������������������49 Summary�������������������������������������������������������������������������������������������������������������50 Chapter 4: API Gateways ��������������������������������������������������������������������51 API Gateways in a Public Cloud ���������������������������������������������������������������������������51 Endpoint Mappings ����������������������������������������������������������������������������������������53 Azure API Management ���������������������������������������������������������������������������������������56 Creating an Azure API Management Service �������������������������������������������������57 Connecting to the Backend Service���������������������������������������������������������������61 Configuring API Endpoints �����������������������������������������������������������������������������64 Configuration Policies ������������������������������������������������������������������������������������68 Products in Azure API Management ��������������������������������������������������������������72 vi TTaabbllee ooff CCoonnTTeennTTss Azure API Management Developer Experience ����������������������������������������������76 Structure of the Azure API Management Components ����������������������������������81 AWS API Gateway ������������������������������������������������������������������������������������������������82 Creating an AWS API Gateway Service ����������������������������������������������������������82 Configure Methods ����������������������������������������������������������������������������������������84 Deploy AWS API Gateway �������������������������������������������������������������������������������89 Creating API Usage Plans ������������������������������������������������������������������������������92 Structure of AWS API Gateway Components �������������������������������������������������94 Summary�������������������������������������������������������������������������������������������������������������95 Chapter 5: API Security ����������������������������������������������������������������������97 Request-Based Security �������������������������������������������������������������������������������������97 Azure API Management ���������������������������������������������������������������������������������98 AWS API Gateway ����������������������������������������������������������������������������������������102 Authentication & Authorization �������������������������������������������������������������������������104 API Security Design �������������������������������������������������������������������������������������105 Authorizers in AWS API Gateway �����������������������������������������������������������������127 Summary�����������������������������������������������������������������������������������������������������������132 Chapter 6: Serverless APIs ���������������������������������������������������������������133 Serverless Computing ���������������������������������������������������������������������������������������133 Serverless APIs in Azure �����������������������������������������������������������������������������������135 Azure Functions �������������������������������������������������������������������������������������������135 Azure Function Proxies ��������������������������������������������������������������������������������144 Azure Logic Apps �����������������������������������������������������������������������������������������149 Serverless APIs in AWS �������������������������������������������������������������������������������������150 AWS Lambda �����������������������������������������������������������������������������������������������150 Creating an AWS Lambda Function �������������������������������������������������������������151 Setting Up AWS Lambda with AWS API Gateway �����������������������������������������156 Summary�����������������������������������������������������������������������������������������������������������158 vii TTaabbllee ooff CCoonnTTeennTTss Chapter 7: Practical Design and Development ���������������������������������159 Contract-First Design ����������������������������������������������������������������������������������������159 Preparation ��������������������������������������������������������������������������������������������������161 Key Challenges ��������������������������������������������������������������������������������������������162 When Not to Try It ����������������������������������������������������������������������������������������163 APIs in Microservices ����������������������������������������������������������������������������������������163 Client-Coordinated Design ���������������������������������������������������������������������������164 API Gateway Pattern ������������������������������������������������������������������������������������165 APIs for Enterprise Integration ��������������������������������������������������������������������������166 Summary�����������������������������������������������������������������������������������������������������������167 Index �������������������������������������������������������������������������������������������������169 viii About the Author Thurupathan Vijayakumar (Thuru) is a technology architect at Tiqri Corporation. He has experience in a range of fields in the software industry such as software architecture, development, cloud computing, data security, business intelligence and etc. In his role as a technology architect, he works closely with business stakeholders and developers and help them mapping business requirements to the latest technologies and driving innovation. Thuru is a hard-core developer and experienced in many different languages, including GW Basic, FoxPro, Pascal, C, C++, Visual Basic, Action Script, Java, C#, JavaScript Go, Rust and the list grows. He authored the book Practical Azure Application Development in 2017, which is a handy guide for getting started in Azure development. He’s a Microsoft MVP for Microsoft Azure and a speaker in international conferences and user group meetings. Check his blog for his most recent work. Blog: www.thuru.net Twitter: @thurutweets ix About the Technical Reviewer Dheeraj Swami is a Technical consultant at Microsoft India. He has more than 10 years of experience in the IT industry. He has worked on Microsoft full stack, Hybrid Mobile Development (Ionic), and Salesforce. Dheeraj is a Microsoft certified Architect in Azure technology stack and a certified Salesforce developer, advanced developer, and administrator. xi
Description: