{"id":31966,"date":"2024-03-26T14:27:17","date_gmt":"2024-03-26T13:27:17","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/?p=31966"},"modified":"2024-03-26T14:27:17","modified_gmt":"2024-03-26T13:27:17","slug":"add-a-ui-to-explore-the-feathers-js-api","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/add-a-ui-to-explore-the-feathers-js-api\/","title":{"rendered":"Add a UI to explore the Feathers.js API"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Following on from my previous article: <a href=\"https:\/\/www.dbi-services.com\/blog\/create-rest-api-from-your-database-in-minute-with-feathers-js\/\">Create REST API from your database in minute with Feathers.js<\/a>, today I want to add a UI to explore the Feathers.js API.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">When we provide an API, it&#8217;s common to make a tool available to explore the exposed methods.<br><a href=\"https:\/\/swagger.io\/tools\/swagger-ui\/\">Swagger UI<\/a> is one such tool, and fortunately, in the Feathers.js ecosystem, a <a href=\"https:\/\/www.npmjs.com\/package\/feathers-swagger\">package<\/a> is available for this purpose.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-first-step-install-and-declare-the-package\">First step: install and declare the package<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">In my previous article, I created a Feathers.js project using Koa as HTTP framework, TypeScript as language and NPM as package manager. To install the <a href=\"https:\/\/feathersjs-ecosystem.github.io\/feathers-swagger\/#\/\">feathers-swagger<\/a> package, I use the command :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>npm install feathers-swagger swagger-ui-dist koa-mount koa-static<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Once I&#8217;ve installed the necessary packages, I just need to declare the Swagger interface in my project.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">At the beginning of the src\/app.ts file, I add the swagger package import:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import swagger from 'feathers-swagger';\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Then, <strong>before<\/strong> the &#8220;app.configure(services)&#8221;, I add the Swagger declaration:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>app.configure(swagger({\n  specs: {\n    info: {\n      title: 'Workshop API ',\n      description: 'Workshop API rest services',\n      version: '1.0.0',\n    }\n  },\n  ui: swagger.swaggerUI({ docsPath: '\/docs' }),\n}))<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Note: <\/strong>the position of the declaration in the file is very important: if it&#8217;s after the services configuration, the Swagger interface will be empty.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-second-step-expose-the-service-in-swagger-ui\">Second step: expose the service in Swagger UI<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Once the feathers-swagger package has been installed and initialized in the project, all I have to do is tell the services what to expose. To do this, I add a docs part to my service workshop service in the file (src\/services\/workshop\/workshop.ts).<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\n\/\/ A configure function that registers the service and its hooks via `app.configure`\nexport const workshop = (app: Application) =&gt; {\n  \/\/ Register our service on the Feathers application\n  app.use(workshopPath, new WorkshopService(getOptions(app)), {\n    \/\/ A list of all methods this service exposes externally\n    methods: workshopMethods,\n    \/\/ You can add additional custom events to be sent to clients here\n    events: &#091;],\n    docs: createSwaggerServiceOptions({\n      schemas: { workshopSchema, workshopDataSchema, workshopPatchSchema, workshopQuerySchema },\n      docs: {\n          \/\/ any options for service.docs can be added here\n          description: 'Workshop service',\n      }\n    }),\n  })<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Don&#8217;t forget to add the necessary imports at the beginning of the file:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import {\n  workshopDataValidator,\n  workshopPatchValidator,\n  workshopQueryValidator,\n  workshopResolver,\n  workshopExternalResolver,\n  workshopDataResolver,\n  workshopPatchResolver,\n  workshopQueryResolver,\n  workshopDataSchema,\n  workshopPatchSchema,\n  workshopQuerySchema,\n  workshopSchema\n} from '.\/workshop.schema'\n\nimport type { Application } from '..\/..\/declarations'\nimport { WorkshopService, getOptions } from '.\/workshop.class'\nimport { workshopPath, workshopMethods } from '.\/workshop.shared'\nimport { createSwaggerServiceOptions } from 'feathers-swagger'<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Important<\/strong> : in the case of a TypeScript project, the docs property is not recognized. An additional type declaration must therefore be added. In the src\/declarations.ts file, add :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>declare module '@feathersjs\/feathers' {\n  interface ServiceOptions {\n    docs?: ServiceSwaggerOptions;\n  }\n}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-testing-the-ui\">Testing the UI<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">As usual, to test the service, I use the command :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>npm run dev<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Once the server has been started, simply access the docs page: http:\/\/localhost:3030\/docs\/<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"534\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/2024\/03\/Swagger-UI-1024x534.png\" alt=\"Swagger UI methods list\" class=\"wp-image-32001\" srcset=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/2024\/03\/Swagger-UI-1024x534.png 1024w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/2024\/03\/Swagger-UI-300x156.png 300w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/2024\/03\/Swagger-UI-768x400.png 768w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/2024\/03\/Swagger-UI-1536x801.png 1536w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/2024\/03\/Swagger-UI-2048x1068.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">From the Swagger interface, I can test API methods:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1002\" height=\"1024\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/2024\/03\/Swagger-test-1002x1024.png\" alt=\"Swagger UI method test\" class=\"wp-image-32002\" srcset=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/2024\/03\/Swagger-test-1002x1024.png 1002w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/2024\/03\/Swagger-test-294x300.png 294w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/2024\/03\/Swagger-test-768x785.png 768w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/2024\/03\/Swagger-test.png 1482w\" sizes=\"auto, (max-width: 1002px) 100vw, 1002px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-conclusion\">Conclusion<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Adding a UI to explore the Feathers.js API is quick and easy, thanks to our ecosystem packages.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Swagger UI is a very useful tool, and adding it to your project is a good idea in many cases, such as :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>When developing the API itself, to test methods and make sure they work properly<\/li>\n\n\n\n<li>For the front-end developer using the API, it&#8217;s easy to know which methods are available and how to use them.<\/li>\n\n\n\n<li>In the case of a public API, users can easily support and test methods using the UI<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-to-continue-with-feathers-js\">To continue with Feathers.js<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/www.dbi-services.com\/blog\/add-authentication-in-a-feathers-js-rest-api\/\">Add authentication in a Feathers.js REST API<\/a><br><a href=\"https:\/\/www.dbi-services.com\/blog\/manage-feathers-js-authentication-in-swagger-ui\/\">Manage Feathers.js authentication in Swagger UI<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Following on from my previous article: Create REST API from your database in minute with Feathers.js, today I want to add a UI to explore the Feathers.js API. When we provide an API, it&#8217;s common to make a tool available to explore the exposed methods.Swagger UI is one such tool, and fortunately, in the Feathers.js&hellip;&nbsp;<\/p>\n","protected":false},"author":72,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"neve_meta_sidebar":"","neve_meta_container":"","neve_meta_enable_content_width":"","neve_meta_content_width":0,"neve_meta_title_alignment":"","neve_meta_author_avatar":"","neve_post_elements_order":"","neve_meta_disable_header":"","neve_meta_disable_footer":"","neve_meta_disable_title":"","neve_meta_reading_time":"","_themeisle_gutenberg_block_has_review":false,"footnotes":""},"categories":[4135],"tags":[979,1090,1001,3301,3257],"class_list":["post-31966","post","type-post","status-publish","format-standard","hentry","category-digitalization","tag-api","tag-javascript","tag-node-js","tag-swagger-ui","tag-typescript"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v28.4 (Yoast SEO v28.7) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Add a UI to explore the Feathers.js API - dbi services | Blog<\/title>\n<meta name=\"description\" content=\"Add a tool to explore your Feathers.js REST API. Install and quickly configure Swagger UI on your project !\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.dbi-services.com\/blog\/add-a-ui-to-explore-the-feathers-js-api\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Add a UI to explore the Feathers.js API\" \/>\n<meta property=\"og:description\" content=\"Add a tool to explore your Feathers.js REST API. Install and quickly configure Swagger UI on your project !\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/add-a-ui-to-explore-the-feathers-js-api\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi services | Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/dbiservices\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-03-26T13:27:17+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/2024\/03\/Swagger-UI.png\" \/>\n\t<meta property=\"og:image:width\" content=\"2950\" \/>\n\t<meta property=\"og:image:height\" content=\"1538\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Nicolas Meunier\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@dbiservices\" \/>\n<meta name=\"twitter:site\" content=\"@dbiservices\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Nicolas Meunier\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/add-a-ui-to-explore-the-feathers-js-api\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/add-a-ui-to-explore-the-feathers-js-api\\\/\"},\"author\":{\"name\":\"Nicolas Meunier\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/f7db0bacb346a357921356a06e563000\"},\"headline\":\"Add a UI to explore the Feathers.js API\",\"datePublished\":\"2024-03-26T13:27:17+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/add-a-ui-to-explore-the-feathers-js-api\\\/\"},\"wordCount\":430,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/add-a-ui-to-explore-the-feathers-js-api\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/03\\\/Swagger-UI-1024x534.png\",\"keywords\":[\"api\",\"JavaScript\",\"Node.js\",\"Swagger UI\",\"TypeScript\"],\"articleSection\":[\"Digitalization\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/add-a-ui-to-explore-the-feathers-js-api\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/add-a-ui-to-explore-the-feathers-js-api\\\/\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/add-a-ui-to-explore-the-feathers-js-api\\\/\",\"name\":\"Add a UI to explore the Feathers.js API - dbi services | Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/add-a-ui-to-explore-the-feathers-js-api\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/add-a-ui-to-explore-the-feathers-js-api\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/03\\\/Swagger-UI-1024x534.png\",\"datePublished\":\"2024-03-26T13:27:17+00:00\",\"description\":\"Add a tool to explore your Feathers.js REST API. Install and quickly configure Swagger UI on your project !\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/add-a-ui-to-explore-the-feathers-js-api\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/add-a-ui-to-explore-the-feathers-js-api\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/add-a-ui-to-explore-the-feathers-js-api\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/03\\\/Swagger-UI.png\",\"contentUrl\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/03\\\/Swagger-UI.png\",\"width\":2950,\"height\":1538},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/add-a-ui-to-explore-the-feathers-js-api\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Add a UI to explore the Feathers.js API\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/\",\"name\":\"dbi services Blog\",\"description\":\"#BeSharing\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#organization\"},\"alternateName\":\"dbi Blog\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#organization\",\"name\":\"dbi services\",\"alternateName\":\"dbi\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/dbi-services-logo.png\",\"contentUrl\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/dbi-services-logo.png\",\"width\":512,\"height\":512,\"caption\":\"dbi services\"},\"image\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/dbiservices\\\/\",\"https:\\\/\\\/x.com\\\/dbiservices\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/dbi-services\\\/\",\"https:\\\/\\\/www.youtube.com\\\/user\\\/dbiservices\"],\"description\":\"Swiss IT consulting and services company specialised in efficient data infrastructures and platforms: databases, application servers, cloud, DevOps, digitalization, analytics, data quality and monitoring. Headquartered in Del\u00e9mont with offices in Nyon, Basel, Bern and Zurich.\",\"email\":\"info@dbi-services.com\",\"telephone\":\"+41 32 422 96 00\",\"legalName\":\"dbi services SA\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/f7db0bacb346a357921356a06e563000\",\"name\":\"Nicolas Meunier\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/08\\\/NME_web-min-scaled.jpg\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/08\\\/NME_web-min-scaled.jpg\",\"contentUrl\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/08\\\/NME_web-min-scaled.jpg\",\"caption\":\"Nicolas Meunier\"},\"description\":\"Nicolas Meunier specializes in cloud solutions and has more than 20 years of experience in IT web technologies and development, including CI\\\/CD, Kubernetes, Docker, Jenkins-X, and Azure DevOps. Prior to dbi services, he developed and maintained a CI\\\/CD pipeline at CEGID in Paris and worked as Lead Developer at KPMG. He holds a superior technical diploma in IT development. His background covers software and cloud platform architecture.\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/author\\\/nicolas-meunier\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Add a UI to explore the Feathers.js API - dbi services | Blog","description":"Add a tool to explore your Feathers.js REST API. Install and quickly configure Swagger UI on your project !","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.dbi-services.com\/blog\/add-a-ui-to-explore-the-feathers-js-api\/","og_locale":"en_US","og_type":"article","og_title":"Add a UI to explore the Feathers.js API","og_description":"Add a tool to explore your Feathers.js REST API. Install and quickly configure Swagger UI on your project !","og_url":"https:\/\/www.dbi-services.com\/blog\/add-a-ui-to-explore-the-feathers-js-api\/","og_site_name":"dbi services | Blog","article_publisher":"https:\/\/www.facebook.com\/dbiservices\/","article_published_time":"2024-03-26T13:27:17+00:00","og_image":[{"width":2950,"height":1538,"url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/2024\/03\/Swagger-UI.png","type":"image\/png"}],"author":"Nicolas Meunier","twitter_card":"summary_large_image","twitter_creator":"@dbiservices","twitter_site":"@dbiservices","twitter_misc":{"Written by":"Nicolas Meunier","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/add-a-ui-to-explore-the-feathers-js-api\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/add-a-ui-to-explore-the-feathers-js-api\/"},"author":{"name":"Nicolas Meunier","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/f7db0bacb346a357921356a06e563000"},"headline":"Add a UI to explore the Feathers.js API","datePublished":"2024-03-26T13:27:17+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/add-a-ui-to-explore-the-feathers-js-api\/"},"wordCount":430,"commentCount":0,"publisher":{"@id":"https:\/\/www.dbi-services.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/add-a-ui-to-explore-the-feathers-js-api\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/2024\/03\/Swagger-UI-1024x534.png","keywords":["api","JavaScript","Node.js","Swagger UI","TypeScript"],"articleSection":["Digitalization"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/add-a-ui-to-explore-the-feathers-js-api\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/add-a-ui-to-explore-the-feathers-js-api\/","url":"https:\/\/www.dbi-services.com\/blog\/add-a-ui-to-explore-the-feathers-js-api\/","name":"Add a UI to explore the Feathers.js API - dbi services | Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/add-a-ui-to-explore-the-feathers-js-api\/#primaryimage"},"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/add-a-ui-to-explore-the-feathers-js-api\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/2024\/03\/Swagger-UI-1024x534.png","datePublished":"2024-03-26T13:27:17+00:00","description":"Add a tool to explore your Feathers.js REST API. Install and quickly configure Swagger UI on your project !","breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/add-a-ui-to-explore-the-feathers-js-api\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/add-a-ui-to-explore-the-feathers-js-api\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dbi-services.com\/blog\/add-a-ui-to-explore-the-feathers-js-api\/#primaryimage","url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/2024\/03\/Swagger-UI.png","contentUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/2024\/03\/Swagger-UI.png","width":2950,"height":1538},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/add-a-ui-to-explore-the-feathers-js-api\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Add a UI to explore the Feathers.js API"}]},{"@type":"WebSite","@id":"https:\/\/www.dbi-services.com\/blog\/#website","url":"https:\/\/www.dbi-services.com\/blog\/","name":"dbi services Blog","description":"#BeSharing","publisher":{"@id":"https:\/\/www.dbi-services.com\/blog\/#organization"},"alternateName":"dbi Blog","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.dbi-services.com\/blog\/#organization","name":"dbi services","alternateName":"dbi","url":"https:\/\/www.dbi-services.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/2026\/09\/dbi-services-logo.png","contentUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/2026\/09\/dbi-services-logo.png","width":512,"height":512,"caption":"dbi services"},"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/dbiservices\/","https:\/\/x.com\/dbiservices","https:\/\/www.linkedin.com\/company\/dbi-services\/","https:\/\/www.youtube.com\/user\/dbiservices"],"description":"Swiss IT consulting and services company specialised in efficient data infrastructures and platforms: databases, application servers, cloud, DevOps, digitalization, analytics, data quality and monitoring. Headquartered in Del\u00e9mont with offices in Nyon, Basel, Bern and Zurich.","email":"info@dbi-services.com","telephone":"+41 32 422 96 00","legalName":"dbi services SA"},{"@type":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/f7db0bacb346a357921356a06e563000","name":"Nicolas Meunier","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/2022\/08\/NME_web-min-scaled.jpg","url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/2022\/08\/NME_web-min-scaled.jpg","contentUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/2022\/08\/NME_web-min-scaled.jpg","caption":"Nicolas Meunier"},"description":"Nicolas Meunier specializes in cloud solutions and has more than 20 years of experience in IT web technologies and development, including CI\/CD, Kubernetes, Docker, Jenkins-X, and Azure DevOps. Prior to dbi services, he developed and maintained a CI\/CD pipeline at CEGID in Paris and worked as Lead Developer at KPMG. He holds a superior technical diploma in IT development. His background covers software and cloud platform architecture.","url":"https:\/\/www.dbi-services.com\/blog\/author\/nicolas-meunier\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/31966","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/users\/72"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=31966"}],"version-history":[{"count":0,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/31966\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=31966"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=31966"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=31966"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}