{"product_id":"110404","title":"Practical API Design Using OpenAPI and Swagger ","description":"\u003ccenter\u003e\u003cdiv style=\"text-align:center\"\u003e\u003cimg src=\"https:\/\/tmgdisk01.cafe24.com\/images\/vs\/4172\/sv\/3jYEEONKxjnfhDVDVGG6Er3BPpF6wF.png?v=1765101694\" style=\"max-width:100%;max-height:10px\"\u003e\u003c\/div\u003e\u003c\/center\u003e\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\u003ccenter\u003e\n\n\u003cdiv style=\"width:95%\"\u003e\n\n\u003cdiv style=\"text-align:center;font-size:30px;font-weight:bolder;line-height:1.6em\"\u003e Practical API Design Using OpenAPI and Swagger \u003c\/div\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003cdiv style=\"border-bottom:1px;border-bottom-style:dotted;border-color:;padding-bottom:20px\"\u003e\u003ccenter\u003e\u003ctable align=\"center\" width=\"100%\"\u003e\u003ctbody style=\"border:0px\"\u003e\n\n\u003ctr\u003e\u003ctd align=\"center\" style=\"line-height:1.2em;text-align:center;font-size:18px;color:black;font-weight:bold;padding-bottom:20px;\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\n\n\u003ctr\u003e\u003ctd style=\"text-align:center\"\u003e\u003cimg src=\"https:\/\/image.yes24.com\/goods\/124127840\/XL\" style=\"max-width:100%;height:auto\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\n\n\n\u003c\/tbody\u003e\u003c\/table\u003e\u003c\/center\u003e\u003c\/div\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003cdiv style=\"width:95%;{split_style6}padding-top:20px;padding-bottom:20px\"\u003e\n\n\u003cdiv style=\"text-align:left;font-size:16px;font-weight:bold;padding-bottom:20px\"\u003e Description \u003c\/div\u003e\n\n\u003cdiv style=\"text-align:left;word-break:break-all;font-size:14px;line-height:1.6em;\"\u003e\n\n\u003cdiv\u003e\u003ch5\u003e \u003cb\u003eBook Introduction\u003c\/b\u003e\n\u003c\/h5\u003e\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cdiv\u003e\u003cdiv\u003e A must-read for backend developers seeking smart development, as well as technical project managers and project owners (POs), and front-end developers! From requirements analysis and user story writing to advanced business model design, API design and documentation, automation, testing, and API extension and evolution, this is the definitive guide to web API design and utilization that both API users and developers will love! A special Korean-language appendix also shows how to leverage Swagger in Spring Boot web services!\u003c\/div\u003e\u003c\/div\u003e\n\u003cdiv\u003e\u003cul\u003e\n\u003cli\u003e You can preview some of the book's contents.\u003cbr\u003e \u003cspan\u003ePreview\u003c\/span\u003e\n\n\u003c\/li\u003e  \u003c\/ul\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cbr\u003e\u003cdiv\u003e\u003ch5\u003e\u003cb\u003eindex\u003c\/b\u003e\u003c\/h5\u003e\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cdiv\u003e \u003cb\u003e[Part 1] Describing an Existing Product's API in OpenAPI Format\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e Chapter 1: Introduction to API and OpenAPI\u003cbr\u003e __1.1 What is the API ecosystem?\u003cbr\u003e __1.2 Describing the API\u003cbr\u003e ____1.2.1 Bridget's Work\u003cbr\u003e ____1.2.2 The Potential of Bridget's Solution\u003cbr\u003e __1.3 What is OpenAPI?\u003cbr\u003e ____1.3.1 OpenAPI Definition Example\u003cbr\u003e __1.4 Where is it best to use the OpenAPI definition?\u003cbr\u003e __1.5 What is Swagger?\u003cbr\u003e __1.6 What is REST?\u003cbr\u003e __1.7 When to use OpenAPI?\u003cbr\u003e ____1.7.1 API Users\u003cbr\u003e ____1.7.2 API Provider\u003cbr\u003e ____1.7.3 API Designer\u003cbr\u003e __1.8 Structure of this book\u003cbr\u003e __1.9 Summary\u003cbr\u003e\u003cbr\u003e Chapter 2: Preparing API Requests\u003cbr\u003e __2.1 Problem Definition\u003cbr\u003e ____2.1.1 Direct Sales API Overview\u003cbr\u003e ____2.1.2 The first two operations of the Direct Sales API\u003cbr\u003e __2.2 Postman Preparation\u003cbr\u003e __2.3 Direct Sales API\u003cbr\u003e __2.4 View review list\u003cbr\u003e ____2.4.1 Configuring a GET Request\u003cbr\u003e ____2.4.2 Check\u003cbr\u003e __2.5 Leave a review\u003cbr\u003e ____2.5.1 Configuring a POST Request\u003cbr\u003e ____2.5.2 Check\u003cbr\u003e __2.6 Practice\u003cbr\u003e ____2.6.1 The Truth About Cats API\u003cbr\u003e ____2.6.2 Minimal Avatar API\u003cbr\u003e ____2.6.3 DuckDuckGo Search Engine API\u003cbr\u003e ____2.6.4 Pirate Slang API\u003cbr\u003e __2.7 HTTP for Warriors\u003cbr\u003e __2.8 Summary\u003cbr\u003e \u003cbr\u003eChapter 3: First Impressions of the OpenAPI Definition\u003cbr\u003e __3.1 Problem Definition\u003cbr\u003e __3.2 Introduction to the OpenAPI Specification\u003cbr\u003e __3.3 YAML Overview\u003cbr\u003e ___3.3.1 JSON to YAML\u003cbr\u003e __3.4 Describing the GET operation\u003cbr\u003e __3.5 GET operation extension\u003cbr\u003e __3.6 Summary\u003cbr\u003e\u003cbr\u003e Chapter 4: Creating an OpenAPI Definition with the Swagger Editor\u003cbr\u003e __4.1 Introducing the Swagger Editor\u003cbr\u003e ___4.1.1 Editor Panel\u003cbr\u003e ___4.1.2 UI Documentation Panel\u003cbr\u003e ___4.1.3 Tools Menu\u003cbr\u003e ___4.1.4 Save\u003cbr\u003e __4.2 Creating an OpenAPI definition in the Swagger editor\u003cbr\u003e ___4.2.1 Valid Mini OpenAPI Definition\u003cbr\u003e ___4.2.2 Creating an OpenAPI Definition in the Swagger Editor\u003cbr\u003e ___4.2.3 Verification\u003cbr\u003e __4.3 Added GET \/reviews\u003cbr\u003e __4.4 API Calls\u003cbr\u003e ___4.4.1 Calling GET \/reviews\u003cbr\u003e ___4.4.2 Adding server information to the OpenAPI definition\u003cbr\u003e ___4.4.3 Call GET \/reviews again\u003cbr\u003e __4.5 Summary\u003cbr\u003e\u003cbr\u003e Chapter 5: Describing API Responses\u003cbr\u003e __5.1 HTTP response\u003cbr\u003e __5.2 Problem Definition\u003cbr\u003e __5.3 The Amazing World of Data Schemas\u003cbr\u003e __5.4 JSON Schema\u003cbr\u003e ___5.4.1 type field\u003cbr\u003e ___5.4.2 Adding fields to an object\u003cbr\u003e ___5.4.3 minimum and maximum\u003cbr\u003e ___5.4.4 Number and Integer\u003cbr\u003e __5.5 Status Code\u003cbr\u003e __5.6 Media Type (MIME)\u003cbr\u003e __5.7 Describing the GET \/reviews Response \u003cbr\u003e___5.7.1 Super Mini Response\u003cbr\u003e ___5.7.2 GET \/reviews 200 Response Body\u003cbr\u003e ___5.7.3 Add a rating field to the response body\u003cbr\u003e ___5.7.4 Add message, uuid, and userId fields\u003cbr\u003e __5.8 Summary\u003cbr\u003e\u003cbr\u003e Chapter 6: Resource Creation\u003cbr\u003e __6.1 Problem Definition\u003cbr\u003e __6.2 Describing POST \/reviews and the Request Body\u003cbr\u003e ___6.2.1 Request Body\u003cbr\u003e ___6.2.2 Schema of requestBody\u003cbr\u003e __6.3 Create a new review\u003cbr\u003e ___6.3.1 Improved try-it-out functionality with additional examples\u003cbr\u003e __6.4 Describing GET \/reviews\/{reviewId} with path parameters\u003cbr\u003e ___6.4.1 Path Parameters\u003cbr\u003e ___6.4.2 Describing the reviewId path parameter\u003cbr\u003e __6.5 Confirm creation of review\u003cbr\u003e __6.6 Summary\u003cbr\u003e\u003cbr\u003e Chapter 7 Authentication and Authorization\u003cbr\u003e __7.1 Problem Definition\u003cbr\u003e __7.2 Preparing for Certification\u003cbr\u003e ___7.2.1 Challenge: Writing a POST \/users\u003cbr\u003e ___7.2.2 Challenge: Writing a POST \/tokens\u003cbr\u003e ___7.2.3 Solution: Change the definition\u003cbr\u003e ___7.2.4 Verify user and token creation capabilities\u003cbr\u003e __7.3 Adding Authorization header\u003cbr\u003e ___7.3.1 OpenAPI authorization processing method\u003cbr\u003e ___7.3.2 Authorization (Security) Methods Supported by OpenAPI 3.0.x\u003cbr\u003e ___7.3.3 Adding an Authorization header to the security scheme \u003cbr\u003e___7.3.4 Add security requirements to POST \/reviews\u003cbr\u003e ___7.3.5 Verifying Security Function Operation\u003cbr\u003e __7.4 Optionally apply security\u003cbr\u003e __7.5 Other security schemes\u003cbr\u003e __7.6 General Ways to Apply Security Schemes\u003cbr\u003e __7.7 Summary\u003cbr\u003e\u003cbr\u003e Chapter 8: Preparing and Hosting API Documentation\u003cbr\u003e __8.1 Problem Definition\u003cbr\u003e __8.2 Adding metadata to the API definition\u003cbr\u003e __8.3 Writing descriptions in Markdown\u003cbr\u003e ___8.3.1 Markdown Basics\u003cbr\u003e ___8.3.2 Added Markdown description to the Direct Sales API definition\u003cbr\u003e __8.4 Grouping operations with tags\u003cbr\u003e ___8.4.1 Adding tags to the GET \/reviews operation\u003cbr\u003e ___8.4.2 Add a description to the tag\u003cbr\u003e ___8.4.3 Adding tags to remainder operations\u003cbr\u003e __8.5 Hosting API Documentation with Netlify.com and Swagger UI\u003cbr\u003e ___8.5.1 Preparing Swagger UI with OpenAPI Definition\u003cbr\u003e ___8.5.2 Hosted by Netlify.com\u003cbr\u003e __8.6 Part 1 Conclusion\u003cbr\u003e __8.7 Summary\u003cbr\u003e\u003cbr\u003e \u003cb\u003e[Part 2] API Design First Using OpenAPI and Swagger\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e Chapter 9: Web Application Design\u003cbr\u003e __9.1 Pet Sitter Ideas\u003cbr\u003e __9.2 Pet Sitter Project Launch\u003cbr\u003e ___9.2.1 Additional Requirements\u003cbr\u003e ___9.2.2 Team Structure \u003cbr\u003e___9.2.3 API-centric architecture\u003cbr\u003e ___9.2.4 Plan\u003cbr\u003e __9.3 Domain Modeling and API\u003cbr\u003e ___9.3.1 Domain Modeling for API Use\u003cbr\u003e ___9.3.2 Review of the Direct Sales API\u003cbr\u003e __9.4 Pet Sitter Domain Model\u003cbr\u003e ___9.4.1 Concepts used in the model\u003cbr\u003e ___9.4.2 User Model\u003cbr\u003e ___9.4.3 Job Postings and Pet Models\u003cbr\u003e __9.5 Pet Sitter User Story\u003cbr\u003e ___9.5.1 What is a User Story?\u003cbr\u003e ___9.5.2 Collecting User Stories\u003cbr\u003e ___9.5.3 User Story Mapping\u003cbr\u003e __9.6 Summary\u003cbr\u003e\u003cbr\u003e Chapter 10: API Design Using OpenAPI\u003cbr\u003e __10.1 Problem\u003cbr\u003e ___10.1.1 Converting the domain model to OpenAPI\u003cbr\u003e ___10.1.2 Ensuring Reusability\u003cbr\u003e __10.2 Creating a schema\u003cbr\u003e ___10.2.1 OpenAPI file containing the schema\u003cbr\u003e ___10.2.2 Common Schema Reference\u003cbr\u003e ___10.2.3 User Schema\u003cbr\u003e ___10.2.4 Job Schema\u003cbr\u003e ___10.2.5 Dog Schema\u003cbr\u003e ___10.2.6 JobApplication Schema\u003cbr\u003e __10.3 API operations and CRUD\u003cbr\u003e ___10.3.1 Defining API Requests and Responses\u003cbr\u003e ___10.3.2 User Stories and CRUD Design\u003cbr\u003e __10.4 Pet Sitter API\u003cbr\u003e ___10.4.1 Operations required for the User schema\u003cbr\u003e ___10.4.2 Operations required for the Job schema \u003cbr\u003e___10.4.3 Operations required for the JobApplication schema\u003cbr\u003e __10.5 Summary\u003cbr\u003e\u003cbr\u003e Chapter 11: Building a Change Workflow with an API Design-First Approach\u003cbr\u003e __11.1 Problem\u003cbr\u003e __11.2 Change Discussion and Response\u003cbr\u003e __11.3 GitHub as a Workflow Engine\u003cbr\u003e ___11.3.1 Single Source of Truth\u003cbr\u003e ___11.3.2 Change Proposal\u003cbr\u003e ___11.3.3 Accepting Changes\u003cbr\u003e ___11.3.4 Check Change Comparison\u003cbr\u003e __11.4 GitHub Workflow Integration\u003cbr\u003e ___11.4.1 Configuring GitHub and the Source of Truth\u003cbr\u003e ___11.4.2 GitHub Workflow Steps\u003cbr\u003e __11.5 Workflow Practice\u003cbr\u003e ___11.5.1 Added suggestion to DELETE \/jobs\/{id}\u003cbr\u003e ___11.5.2 Review and Accept Changes\u003cbr\u003e ___11.5.3 Comparing Old and New Branches\u003cbr\u003e ___11.5.4 What we did in Chapter 11\u003cbr\u003e __11.6 Summary\u003cbr\u003e\u003cbr\u003e Chapter 12: Implementing Front-End Code and Responding to Changes\u003cbr\u003e __12.1 Problem\u003cbr\u003e __12.2 Prism Neck Server Configuration\u003cbr\u003e ___12.2.1 Prism Installation\u003cbr\u003e ___12.2.2 Checking Prism Operation\u003cbr\u003e __12.3 Front-end development based on the wooden server\u003cbr\u003e ___12.3.1 Adding examples to the OpenAPI definition\u003cbr\u003e ___12.3.2 Applying examples to prisms\u003cbr\u003e __12.4 Identifying Missing API Operations\u003cbr\u003e ___12.4.1 Review Adding New Operations \u003cbr\u003e___12.4.2 New Operation Design\u003cbr\u003e ___12.4.3 Selecting the neck data to be returned from the prism\u003cbr\u003e ___12.4.4 Change Proposal\u003cbr\u003e ___12.4.5 curl example\u003cbr\u003e __12.5 Summary\u003cbr\u003e\u003cbr\u003e Chapter 13: Building a Backend with Node.js and Swagger CodeGen\u003cbr\u003e __13.1 Problem\u003cbr\u003e __13.2 Introducing Swagger Codegen\u003cbr\u003e ___13.2.1 Generating Client Code\u003cbr\u003e ___13.2.2 Generating Server Code\u003cbr\u003e ___13.2.3 Swagger Generator\u003cbr\u003e __13.3 Backend Structure\u003cbr\u003e ___13.3.1 Generating Backend Code\u003cbr\u003e ___13.3.2 Backend Structure Analysis\u003cbr\u003e ___13.3.3 OpenAPI Modifications\u003cbr\u003e __13.4 Backend OpenAPI modification\u003cbr\u003e ___13.4.1 Add operation ID\u003cbr\u003e ___13.4.2 Tagging API Operations\u003cbr\u003e ___13.4.3 Regenerating the Backend Stubs\u003cbr\u003e __13.5 Running and Testing Backend Code\u003cbr\u003e ___13.5.1 Testing with Postman\u003cbr\u003e ___13.5.2 Input Validation Test\u003cbr\u003e ___13.5.3 Verifying results with a prism\u003cbr\u003e __13.6 Saving a database with Mongoose\u003cbr\u003e ___13.6.1 API fixes\u003cbr\u003e ___13.6.2 Preparing to Use MongoDB\u003cbr\u003e ___13.6.3 Mongoose Configuration\u003cbr\u003e ___13.6.4 Creating a Model\u003cbr\u003e __13.7 Implementing API Methods\u003cbr\u003e __13.8 Summary\u003cbr\u003e\u003cbr\u003e Chapter 14: Integrating and Deploying Web Applications\u003cbr\u003e __14.1 Problem \u003cbr\u003e___14.1.1 Authentication\u003cbr\u003e ___14.1.2 Code Organization\u003cbr\u003e ___14.1.3 Providing backend and frontend components together\u003cbr\u003e __14.2 Authorization Implementation\u003cbr\u003e ___14.2.1 Creating a Security Scheme\u003cbr\u003e ___14.2.2 Added 'Login' action\u003cbr\u003e ___14.2.3 Defining Operational Security\u003cbr\u003e __14.3 Repository Management\u003cbr\u003e ___14.3.1 Maintaining the existing structure\u003cbr\u003e ___14.3.2 Using a Shared Git Repository\u003cbr\u003e ___14.3.3 Consolidating code and API definitions into a single repository\u003cbr\u003e ___14.3.4 Decisions and Refactoring\u003cbr\u003e __14.4 Configuring the Integrated Web Server\u003cbr\u003e ___14.4.1 URL Design\u003cbr\u003e ___14.4.2 Server Configuration\u003cbr\u003e __14.5 Summary\u003cbr\u003e\u003cbr\u003e \u003cb\u003e[Part 3] API Expansion and Evolution After Product Launch\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e Chapter 15: Secondary API Design\u003cbr\u003e __15.1 First Development Sprint Review\u003cbr\u003e __15.2 Next Sprint Planning\u003cbr\u003e __15.3 Preparing new features\u003cbr\u003e ___15.3.1 Revisiting the Domain Model\u003cbr\u003e ___15.3.2 User Story Review\u003cbr\u003e __15.4 Developer Experience Improvements\u003cbr\u003e ___15.4.1 Consistency\u003cbr\u003e ___15.4.2 Error Handling\u003cbr\u003e ___15.4.3 Input Validation\u003cbr\u003e ___15.4.4 Versioning and Evolution\u003cbr\u003e __15.5 Summary\u003cbr\u003e\u003cbr\u003e Chapter 16 Schema Design Using OpenAPI Composition\u003cbr\u003e __16.1 Problem \u003cbr\u003e__16.2 Domain Model Polymorphism and Inheritance\u003cbr\u003e __16.3 Schema Update\u003cbr\u003e ___16.3.1 Pet Schema\u003cbr\u003e ___16.3.2 Dog Schema\u003cbr\u003e ___16.3.3 Cat Schema\u003cbr\u003e __16.4 Polymorphism and Inheritance in OpenAPI\u003cbr\u003e ___16.4.1 Composition within the Dog and Cat schemas\u003cbr\u003e ___16.4.2 Composition within the Pet schema\u003cbr\u003e __16.5 Add OpenAPI delimiter\u003cbr\u003e __16.6 Summary\u003cbr\u003e\u003cbr\u003e Chapter 17 Applying Filters and Paging to Collection Endpoints\u003cbr\u003e __17.1 Problem\u003cbr\u003e __17.2 Filtering Design\u003cbr\u003e ___17.2.1 Projection Filter\u003cbr\u003e ___17.2.2 Selection Filter\u003cbr\u003e ___17.2.3 Handling Nested Schemas\u003cbr\u003e ___17.2.4 Query Language\u003cbr\u003e ___17.2.5 Special Practices\u003cbr\u003e __17.3 Pet Sitter Filtering\u003cbr\u003e ___17.3.1 Selecting the filtering criteria field\u003cbr\u003e ___17.3.2 Applying Filtering to OpenAPI\u003cbr\u003e ___17.3.3 Request to include filters\u003cbr\u003e __17.4 Paging Design\u003cbr\u003e ___17.4.1 Offset-based, page-based paging\u003cbr\u003e ___17.4.2 Cursor-based paging\u003cbr\u003e __17.5 Applying paging to pet sitters\u003cbr\u003e ___17.5.1 Applying Paging to OpenAPI\u003cbr\u003e ___17.5.2 Extending the Request Example\u003cbr\u003e __17.6 Sorting Design\u003cbr\u003e ___17.6.1 Single Field Sorting\u003cbr\u003e ___17.6.2 Multi-field sorting\u003cbr\u003e ___17.6.3 Parameter Type Consistency \u003cbr\u003e__17.7 Applying sorting to pet sitters\u003cbr\u003e ___17.7.1 Sort Fields\u003cbr\u003e ___17.7.2 Design of sorting parameters\u003cbr\u003e ___17.7.3 Add sorting functionality to the OpenAPI definition\u003cbr\u003e ___17.7.4 Example request with filtering, paging, and sorting\u003cbr\u003e __17.8 Summary\u003cbr\u003e\u003cbr\u003e Chapter 18: Exception Handling Using Problem+Json\u003cbr\u003e __18.1 Problem Definition\u003cbr\u003e __18.2 Error Classification\u003cbr\u003e ___18.2.1 Finding Failure Situations\u003cbr\u003e ___18.2.2 Common Error Patterns\u003cbr\u003e __18.3 Error Response Requirements\u003cbr\u003e __18.4 OAS Tool Format\u003cbr\u003e __18.5 problem+json format\u003cbr\u003e __18.6 Adding error responses to the OpenAPI definition\u003cbr\u003e ___18.6.1 Creating an Error Schema\u003cbr\u003e ___18.6.2 Add error response to operations\u003cbr\u003e __18.7 Error Handling Guide\u003cbr\u003e ___18.7.1 Front-end development\u003cbr\u003e ___18.7.2 Backend Development\u003cbr\u003e __18.8 Summary\u003cbr\u003e\u003cbr\u003e Chapter 19: Input Validation Using Advanced JSON Schema\u003cbr\u003e __19.1 Problem Definition\u003cbr\u003e __19.2 Validation Details\u003cbr\u003e ___19.2.1 readOnly, writeOnly properties\u003cbr\u003e ___19.2.2 Enforcing numeric constraints\u003cbr\u003e ___19.2.3 String format coercion\u003cbr\u003e ___19.2.4 Enforcing Array Constraints\u003cbr\u003e ___19.2.5 Enumeration Definition \u003cbr\u003e___19.2.6 List of required and optional properties\u003cbr\u003e ___19.2.7 Specifying default values\u003cbr\u003e __19.3 Pet Sitter Schema Update\u003cbr\u003e ___19.3.1 User Schema\u003cbr\u003e ___19.3.2 Job Schema\u003cbr\u003e ___19.3.3 JobApplication Schema\u003cbr\u003e ___19.3.4 Pet, Dog, Cat Schema\u003cbr\u003e __19.4 Summary\u003cbr\u003e\u003cbr\u003e Chapter 20: API Version Management and Handling Major Changes\u003cbr\u003e __20.1 Problem Definition\u003cbr\u003e __20.2 What is a major change?\u003cbr\u003e __20.3 Major changes released\u003cbr\u003e ___20.3.1 Company Change Coordination\u003cbr\u003e ___20.3.2 API Version Management\u003cbr\u003e ___20.3.3 Distinguishing schema versions using media types\u003cbr\u003e ___20.3.4 Notice of addition\/deletion of features\u003cbr\u003e __20.4 Summary\u003cbr\u003e\u003cbr\u003e Chapter 21: API Pre-Launch Checklist\u003cbr\u003e __21.1 Pros and Cons of Public APIs\u003cbr\u003e __21.2 Checklist\u003cbr\u003e __21.3 API normal operation\u003cbr\u003e ___21.3.1 API Unit Tests\u003cbr\u003e ___21.3.2 End-to-end testing\u003cbr\u003e __21.4 Documentation\u003cbr\u003e __21.5 Ensuring API Consistency\u003cbr\u003e __21.6 Validation and Error Reporting\u003cbr\u003e __21.7 API Roadmap and Index Released\u003cbr\u003e __21.8 Change Strategy\u003cbr\u003e __21.9 Security Improvements\u003cbr\u003e __21.10 API Monitoring\u003cbr\u003e ___21.10.1 Configuring Indicator Collection\u003cbr\u003e __21.11 API Release\u003cbr\u003e ___21.12 Summary\u003cbr\u003e\u003cbr\u003e Appendix A Swagger 2.0, OpenAPI 3.0, OpenAPI 3.1 \u003cbr\u003eAppendix B [Korean Special Appendix] How to Use Swagger in Spring Boot Web Services\u003c\/div\u003e\n\u003cdiv\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cbr\u003e\u003cdiv\u003e\u003ch5\u003e \u003cb\u003eDetailed image\u003c\/b\u003e \u003c\/h5\u003e\u003c\/div\u003e\n\u003cdiv\u003e\u003cdiv\u003e\u003cimg src=\"https:\/\/image.yes24.com\/momo\/TopCate4374\/MidCate004\/437336516.jpg\" border=\"0\" alt=\"Detailed Image 1\"\u003e\u003c\/div\u003e\u003c\/div\u003e\n\u003cbr\u003e\u003cdiv\u003e\u003ch5\u003e \u003cb\u003ePublisher's Review\u003c\/b\u003e\n\u003c\/h5\u003e\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cdiv\u003e \u003cb\u003eWhat this book covers\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e This book covers how to describe and design APIs.\u003cbr\u003e As an introductory guide to the world of OpenAPI, we explore the tools and practices used by API developers who practice design-first principles.\u003cbr\u003e It starts with the basics of reading and writing OpenAPI definitions, and moves on to domain design, workflow changes, and API design patterns.\u003cbr\u003e While we focus on OpenAPI and API design, we've tried to cover topics across the entire API lifecycle, from both technical and project management perspectives.\u003cbr\u003e I hope this book will help you understand and gain confidence in what problems OpenAPI solves, why it exists, and how to use it.\u003cbr\u003e \u003cbr\u003e- Describe the API of an existing product in OpenAPI format.\u003cbr\u003e - Applying a design-first approach to API design using OpenAPI and Swagger.\u003cbr\u003e - Learn how to expand and evolve your API after product launch.\u003cbr\u003e - Learn OpenAPI syntax and structure.\u003cbr\u003e - Create an OpenAPI definition using Swagger.\u003cbr\u003e - Automate processes and automatically generate code.\u003cbr\u003e - Learn how to collaborate across functional organizations.\u003cbr\u003e\u003cbr\u003e \u003cb\u003eTarget audience for this book\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e This is a must-read for software developers who are interested in APIs and want to use them in a design-first manner.\u003cbr\u003e A must-read for anyone who needs to make API-related decisions—front-end or back-end developers, product managers, QA testers, and even CEOs.\u003cbr\u003e We've taken care to make the book accessible even if you don't have an in-depth understanding of any particular topic, and if you're familiar with concepts like JSON or HTTP, you should have no trouble following the book. \u003cbr\u003eIt also includes a lot of simple reviews and links to external resources.\u003cbr\u003e\u003cbr\u003e \u003cb\u003eStructure of this book\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e [Part 1] Describing an existing product's API in OpenAPI format\u003cbr\u003e Chapter 1: The Meaning and Method of Describing APIs\u003cbr\u003e · Chapter 2: Postman, a tool used to explore APIs\u003cbr\u003e · Chapter 3: How to describe a pre-built Farmstall API\u003cbr\u003e Chapter 4: How to Use the Swagger Editor\u003cbr\u003e Chapter 5: Describing Basic API Requests and Responses\u003cbr\u003e Chapter 6: Covering Request and Response Bodies\u003cbr\u003e Chapter 7: Understanding Authentication and Authorization\u003cbr\u003e Chapter 8: How to Host a Website That Serves API Documentation Using Swagger UI\u003cbr\u003e\u003cbr\u003e [Part 2] Designing an API from Scratch Using OpenAPI and Swagger\u003cbr\u003e Chapter 9: Introducing the PetSitter project, which will be covered throughout Part 2.\u003cbr\u003e Chapter 10: Designing an API and Describing It Using OpenAPI\u003cbr\u003e Chapter 11: Introducing a Git-based workflow for handling API design changes \u003cbr\u003eChapter 12: How to Mock Your API and Respond to Changes from an API User's Perspective\u003cbr\u003e Chapter 13: Implementing an API Using Swagger CodeGen\u003cbr\u003e Chapter 14: Preparing to use the API and integrating the frontend and backend\u003cbr\u003e\u003cbr\u003e [Part 3] Expanding and Evolving the API Design Created in Part 2\u003cbr\u003e Chapter 15: Planning the Next Steps of Your API Iteration\u003cbr\u003e · Chapter 16: Extending the Domain Model Using JSON Schema Composition\u003cbr\u003e Chapter 17: Adding Filtering, Paging, and Sorting to Your API\u003cbr\u003e Chapter 18: Understanding the problem+json response format and applying error handling to APIs\u003cbr\u003e Chapter 19: Extending JSON Schema and Applying Input Validation\u003cbr\u003e Chapter 20: API Versioning and Handling Breaking Changes\u003cbr\u003e Chapter 21: API Final Release Checklist\u003cbr\u003e\u003cbr\u003e [Appendix] Differences between Swagger 2.0, OpenAPI 3.0, and OpenAPI 3.1 \u003cbr\u003e[Korean Edition Special Appendix] How to Use Swagger in Spring Boot Web Services\u003cbr\u003e\u003cbr\u003e \u003cb\u003eAuthor's Note\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e Swagger, a suite of tools to help you define and write REST API documentation, lets you provide highly usable, secure API documentation.\u003cbr\u003e Swagger implements the OpenAPI specification, a standard that is independent of any specific company, so when you use Swagger, you're using the same standards accepted by Google, Microsoft, and Amazon.\u003cbr\u003e This book introduces a design-first approach. Developers new to API design can learn the entire API lifecycle, from conceptualization to production level.\u003cbr\u003e As you gradually complete examples, you'll learn the dos and don'ts of API design and development. \u003cbr\u003eGain hands-on experience designing APIs that meet your business needs using tools that automatically generate documentation and developer-friendly mocks or client SDKs.\u003cbr\u003e Even if you are a web developer with no prior knowledge of Swagger or OpenAPI, you can easily read this.\u003cbr\u003e\u003cbr\u003e \u003cb\u003eTranslator's Note\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e I remember back when the Internet was first introduced, there was an experiential entertainment content that tested how well you could get by with just the Internet without leaving your home.\u003cbr\u003e But now, I don't think anyone will watch that kind of entertainment.\u003cbr\u003e Because we all know that anyone with access to a smartphone can lead a comfortable life using only the Internet. \u003cbr\u003eIf we continue to zoom in on this convenient world, where we can receive and use items, have food delivered, and even brag about it all on social media with just a few swipes and clicks, we'll see APIs hidden in every nook and cranny. APIs serve as the connecting points between various software, solidly supporting this world.\u003cbr\u003e\u003cbr\u003e APIs, which serve as a connecting point for software, serve as a means of communication for software developers.\u003cbr\u003e To ensure smooth communication, we need to create a specification that defines the format of data to be exchanged and the method of calling, along with a friendly description of it.\u003cbr\u003e That is, you need to describe the API.\u003cbr\u003e OpenAPI is a standard specification that describes HTTP APIs based on the HTTP protocol. Since standards enable automation, many tasks can be automated through OpenAPI. \u003cbr\u003eThis book explains how to describe API definitions using OpenAPI.\u003cbr\u003e If it had ended there, it might have been a boring book, but it covers everything from organizing the requirements of a small web service, writing user stories, designing a business domain model based on them, designing an API that reflects them, writing an API definition using OpenAPI, increasing development productivity using automation based on the definition, and even how to smoothly evolve and extend the API over time.\u003cbr\u003e \u003cbr\u003eWhen designing APIs, there are many unfortunate cases in practice where people design and implement them only for convenience without any specific learning or standards, which makes it difficult to expand later. However, if you read the best practices in this book, you can naturally acquire the knowledge necessary to design scalable APIs. This content alone would be beneficial, but the entire process is unfolded in a format that depicts a small project team being formed, each performing their own role, encountering and solving difficulties, rather than a boring and stiff explanation, making it exciting and even fun.\u003cbr\u003e Moreover, although it occasionally uses specific technologies for examples, it is not inherently tool-dependent, making it an interesting and useful book for all developers who create and utilize APIs.\u003cbr\u003e \u003cbr\u003eThe content of this book generally shows the process of designing and creating a new system using OpenAPI, so you might wonder if it can't be applied to existing systems. Fortunately, there is a way to apply it to existing systems as well.\u003cbr\u003e If you are using Spring Boot-based API server, which is the most widely used API server development platform in Korea, you can automatically create a Swagger UI site with just a few simple settings and annotations.\u003cbr\u003e Although it is a simple example, I thought it would be quite helpful in practice, so I added it as a special appendix to the Korean version.\u003cbr\u003e\u003cbr\u003e Just like with coding, I always see room for improvement in translation.\u003cbr\u003e The same would probably be true for the authors who wrote the original book. \u003cbr\u003eA translator's primary job is to translate the original text into Korean, but I believe a great translator is someone who first reads the original text from the reader's perspective, identifies any inconvenient points, improves them, and ultimately presents a better result to the reader.\u003cbr\u003e This time, too, there may be shortcomings, but I wanted to at least imitate the excellent translator, so I worked on the translation with the goal of making it better than the original.\u003cbr\u003e I sincerely hope that readers will be able to read this book as fluently as if it were written in Korean from the beginning. \u003cbr\u003e\n\n\u003c\/div\u003e\n\u003cdiv\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003cdiv style=\"width:95%;padding-top:20px;padding-bottom:20px\"\u003e\n\n\u003cdiv style=\"text-align:left;font-size:16px;font-weight:bold;padding-bottom:20px\"\u003e GOODS SPECIFICS \u003c\/div\u003e\n\n\u003cdiv style=\"text-align:left;font-size:14px;line-height:1.6em;\"\u003e\n\n\u003cdiv style=\"width:100%;margin-bottom:5px;line-height:1.6em;font-size:14px\"\u003e - \u003cstrong\u003eDate of issue:\u003c\/strong\u003e January 2, 2024\u003c\/div\u003e\n\n\u003cdiv style=\"width:100%;margin-bottom:5px;line-height:1.6em;font-size:14px\"\u003e - \u003cstrong\u003ePage count, weight, size:\u003c\/strong\u003e 520 pages | 966g | 185*240*25mm\u003c\/div\u003e\n\n\u003cdiv style=\"width:100%;margin-bottom:5px;line-height:1.6em;font-size:14px\"\u003e - \u003cstrong\u003eISBN13:\u003c\/strong\u003e 9791189909581\u003c\/div\u003e\n\n\u003cdiv style=\"width:100%;margin-bottom:5px;line-height:1.6em;font-size:14px\"\u003e - \u003cstrong\u003eISBN10:\u003c\/strong\u003e 1189909588 \u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\n\u003ccenter\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003cspan\u003e\u003c\/span\u003e\n\n\u003c\/center\u003e\n\n\n\u003c\/center\u003e","brand":"LIBRAIRIE COREENNE","offers":[{"title":"Default Title","offer_id":43893797388330,"sku":"110404","price":46.0,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0683\/2750\/5962\/files\/cfb48806bc18fdabb203d2ad33959633.jpg?v=1765417099","url":"https:\/\/librairie.coreenne.fr\/en\/products\/110404","provider":"LIBRAIRIE COREENNE","version":"1.0","type":"link"}