我有以下控制器使用@Endpoint
import groovy.transform.CompileStatic
import groovy.util.logging.Slf4j
import io.micronaut.http.annotation.Body
import io.micronaut.http.annotation.Delete
import io.micronaut.management.endpoint.annotation.Endpoint
import io.micronaut.management.endpoint.annotation.Read
import io.micronaut.management.endpoint.annotation.Selector
import istc.g2g.refund.dao.RefundRepository
import istc.g2g.refund.domain.Refund
import javax.inject.Inject
import javax.inject.Singleton
@Slf4j
@Endpoint(id = "refund", defaultSensitive = false)
@Singleton
@CompileStatic
class RefundController {
@Inject
RefundRepository refundRepository
@Read
Refund get(@Selector Long tin) {
refundRepository.findByTin(tin).orElse(null)
}
@Delete
void delete (@Body String foo) {
log.debug("Deleting")
}
}
读取和写入端点显示查找。但删除不是路由端点所示:
{
"{[/refund/{tin}],method=[GET],produces=[application/json]}": {
"method": "istc.g2g.refund.domain.Refund istc.g2g.refund.controller.RefundController.get(java.lang.Long tin)"
},
"{[/routes],method=[GET],produces=[application/json]}": {
"method": "io.reactivex.Single io.micronaut.management.endpoint.routes.RoutesEndpoint.getRoutes()"
},
"{[/refresh],method=[POST],produces=[application/json]}": {
"method": "[Ljava.lang.String; io.micronaut.management.endpoint.refresh.RefreshEndpoint.refresh(java.lang.Boolean force)"
}
}
像文档中的端点请求显示未找到:
$ curl -X DELETE http://localhost:8083/refund
{
"_links" : {
"self" : {
"href" : "/refund",
"templated" : false
}
},
"message" : "Page Not Found"
}
我找不到任何证据表明@Delete需要任何其他配置。
请注意,如果我将注释更改为@Read并使用GET请求,那么它可以找到。
有任何想法吗?
您正在使用错误的Delete
注释。
import io.micronaut.http.annotation.Delete
- > import io.micronaut.management.endpoint.annotation.Delete
编辑:另外,@Body
注释在这种情况下没有做任何事情。