Document and Validate an API you own this product

'); $(document.body).append('
loading reading lists ...
'); function adjustReadingListIcon(isInReadingList){ $readingListToggle.toggleClass("fa-plus", !isInReadingList); $readingListToggle.toggleClass("fa-check", isInReadingList); var tooltipMessage = isInReadingList ? "edit in reading lists" : "add to reading list"; $readingListToggle.attr("title", tooltipMessage); $readingListToggle.attr("data-original-title", tooltipMessage); } $.ajax({ url: "/readingList/isInReadingList", data: { productId: 2739 } }).done(function (data) { adjustReadingListIcon(data && data.hasProductInReadingList); }).catch(function(e){ console.log(e); adjustReadingListIcon(false); }); $readingListToggle.on("click", function(){ if(codePromise == null){ showToast() } loadCode().then(function(store){ store.requestReadingListSpecificationForProduct({ id: window.readingListsServerVars.externalId, manningId: window.readingListsServerVars.productId, title: window.readingListsServerVars.title }); ReadingLists.ReactDOM.render( ReadingLists.React.createElement(ReadingLists.ManningOnlineReadingListModal, { store: store, }), document.getElementById("reading-lists-modal") ); }).catch(function(e){ console.log("Error loading code reading list code"); }); }); var codePromise var readingListStore function loadCode(){ if(codePromise) { return codePromise } return codePromise = new Promise(function (resolve, reject){ $.getScript(window.readingListsServerVars.libraryLocation).done(function(){ hideToast() readingListStore = new ReadingLists.ReadingListStore( new ReadingLists.ReadingListProvider( new ReadingLists.ReadingListWebProvider( ReadingLists.SourceApp.marketplace, getDeploymentType() ) ) ); readingListStore.onReadingListChange(handleChange); readingListStore.onReadingListModalChange(handleChange); resolve(readingListStore); }).catch(function(){ hideToast(); console.log("Error downloading reading lists source"); $readingListToggle.css("display", "none"); reject(); }); }); } function handleChange(){ if(readingListStore != null) { adjustReadingListIcon(readingListStore.isInAtLeastOneReadingList({ id: window.readingListsServerVars.externalId, manningId: window.readingListsServerVars.productId })); } } var $readingListToast = $("#reading-list-toast"); function showToast(){ $readingListToast.css("display", "flex"); setTimeout(function(){ $readingListToast.addClass("shown"); }, 16); } function hideToast(){ $readingListToast.removeClass("shown"); setTimeout(function(){ $readingListToast.css("display", "none"); }, 150); } function getDeploymentType(){ switch(window.readingListsServerVars.deploymentType){ case "development": case "test": return ReadingLists.DeploymentType.dev; case "qa": return ReadingLists.DeploymentType.qa; case "production": return ReadingLists.DeploymentType.prod; case "docker": return ReadingLists.DeploymentType.docker; default: console.error("Unknown deployment environment, defaulting to production"); return ReadingLists.DeploymentType.prod; } } }); } });
prerequisites
basic IDE knowledge • basic Spring and Spring Boot • intermediate Maven • basic Docker and Docker Compose • basic Java or Kotlin • REST principles • basic microservices
skills learned
document the different endpoints using Open API 3 • determine whether the documentation follows the standard format
Andres Sacco
1 week &middot 6-8 hours per week &middot BEGINNER

pro $24.99 per month

  • access to all Manning books, MEAPs, liveVideos, liveProjects, and audiobooks!
  • choose one free eBook per month to keep
  • exclusive 50% discount on all purchases

lite $19.99 per month

  • access to all Manning books, including MEAPs!

team

5, 10 or 20 seats+ for your team - learn more


Look inside

You’re a senior developer at Travel World Agency (TWA), which has grown to become the largest travel agency in the world. The company has built a next-generation system that uses a microservice architecture running on Amazon Web Services (AWS). But while TWA’s success is on the right track, the performance of its reservation microservice is off the rails. As a solution, TWA has replaced the microservice with a new one, using Kotlin and Spring Boot to improve performance and maintainability. Your job is to document the API endpoints for this new microservice—following the Open API 3 standard—to reduce the risk of someone invoking the endpoints incorrectly. You’ll also create custom rules for validating the documentation in an external library, allowing for reuse in other projects across the company.

This project is designed for learning purposes and is not a complete, production-ready application or solution.

project author

Andres Sacco

Andres Sacco is a technical leader at Prisma. He has experience with many programming languages including Java, PHP, and Node.js. At his previous job, Andres helped find alternative ways to optimize data transfers between microservices, which reduced the cost of infrastructure by fifty-five percent. A co-author of Beginning Scala 3, published by Apress, Andres has also dictated internal courses about new technologies and shared his expertise in articles on Medium.

prerequisites

This liveProject is for Java and Kotlin developers interested in learning to improve the quality and robustness of their applications. To begin these liveProjects you’ll need to be familiar with the following:

TOOLS
  • Any IDE: IntelliJ IDEA, Eclipse
  • Basic Spring and Spring Boot
  • Intermediate Maven
  • Basic Docker and Docker Compose
TECHNIQUES
  • Basic knowledge of Java or Kotlin
  • Basic knowledge of Spring Boot and how to add new modules
  • Basic Docker and Docker Compose commands
  • REST principles
  • Basic knowledge of microservices

features

Self-paced
You choose the schedule and decide how much time to invest as you build your project.
Project roadmap
Each project is divided into several achievable steps.
Get Help
While within the liveProject platform, get help from other participants and our expert mentors.
Compare with others
For each step, compare your deliverable to the solutions by the author and other participants.
book resources
Get full access to select books for 90 days. Permanent access to excerpts from Manning products are also included, as well as references to other resources.

choose your plan

team

monthly
annual
$49.99
$399.99
only $33.33 per month
  • five seats for your team
  • access to all Manning books, MEAPs, liveVideos, liveProjects, and audiobooks!
  • choose another free product every time you renew
  • choose twelve free products per year
  • exclusive 50% discount on all purchases
  • Document and Validate an API project for free
RECENTLY VIEWED