base.ts 920 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import { createRoute, OpenAPIHono } from '@hono/zod-openapi'
  2. import { z } from 'zod'
  3. const app = new OpenAPIHono()
  4. const QuerySchema = z.object({
  5. name: z.string().optional().openapi({
  6. param: {
  7. name: 'name',
  8. in: 'query'
  9. },
  10. example: 'John'
  11. })
  12. })
  13. const ResponseSchema = z.object({
  14. message: z.string().openapi({
  15. example: 'Hello from API, John'
  16. })
  17. })
  18. const route = createRoute({
  19. method: 'get',
  20. path: '/',
  21. request: {
  22. query: QuerySchema
  23. },
  24. responses: {
  25. 200: {
  26. content: {
  27. 'application/json': {
  28. schema: ResponseSchema
  29. }
  30. },
  31. description: 'Successful response'
  32. },
  33. 400: {
  34. description: 'Invalid request'
  35. }
  36. }
  37. })
  38. app.openapi(route, (c) => {
  39. const { name } = c.req.valid('query')
  40. return c.json({ message: `Hello from API${name ? `, ${name}` : ''}` })
  41. })
  42. export default app
  43. export type BaseAppType = typeof app