首页 > 解决方案 > 如何扩展 AdonisJS 响应类?

问题描述

当用户在我的 RESTful 应用程序中创建帖子时,我想将响应状态代码设置为 201。

我按照文档创建start/hooks.js如下:

'use strict'                                                                                                                      

const { hooks } = require('@adonisjs/ignitor')                                                                                                   

hooks.after.httpServer(() => {                                                                                                                   
  const Response = use('Adonis/Src/Response')                                                                                                    

  Response.macro('sendStatus', (status) => {                                                                                                     
    this.status(status).send(status)                                                                                                             
  })                                                                                                                                             
})

现在在我的 PostController.js 中,我有这个:

 async store( {request, response, auth} ) {
   const user = await auth.current.user
   response.sendStatus(201)
 }

但是我在这个端点收到了 500 个 HTTP 代码。我究竟做错了什么?

我注意到当我跑步时Response.hasMacro('sendStatus')我得到了 false

标签: javascriptnode.jsadonis.js

解决方案


事实上,阿多尼斯已经为所有响应代码提供了开箱即用的功能......

只需编写 response.created(.....)。

您还可以使用例如:.badRequest()、.notFound() 等...更多信息:https ://adonisjs.com/docs/4.1/response#_descriptive_methods


推荐阅读