小编Pat*_*one的帖子

您可以在 Terraform 中将块作为变量传递,引用资源的嵌套块内容的类型吗?

我正在尝试在 Terraform 中构建 Web ACL 资源 https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/wafv2_web_acl

该资源具有嵌套块规则->操作->块和规则->操作->计数

我想要一个变量,其类型允许我将操作设置为 或 ,count {}以便block{}可以进行以下两种配置:

带块:

resource "aws_wafv2_web_acl" "example" {
  ...

  rule {
   ...

    action {
      block {}
    }

   ...
}
Run Code Online (Sandbox Code Playgroud)

与计数:

resource "aws_wafv2_web_acl" "example" {
  ...

  rule {
   ...

    action {
      count {}
    }

   ...
}
Run Code Online (Sandbox Code Playgroud)

到目前为止,我可以通过布尔变量和动态块以非常非声明性的方式实现此结果。

我的问题是,变量的类型可以引用嵌套块的类型,从而可以将嵌套块的内容传递到变量中吗?

我想要实现的目标与此类似(非工作语法):

resource "aws_wafv2_web_acl" "example" {
  ...

  rule {
   ...

    action = var.action_block

   ...
  } 
}
Run Code Online (Sandbox Code Playgroud)
variable "action_block" {
  description = "Action of the rule"
  type         = <whatever type is accepted …
Run Code Online (Sandbox Code Playgroud)

terraform hcl

12
推荐指数
1
解决办法
8957
查看次数

从Rest Controller返回对象层次结构时如何使用Spring MVC @JsonView

我正在构建一个使用Spring MVC 4.10和jackson 2.3.2的应用程序.我有一个Project类,它有子Proposal对象和Customer对象.这些Proposal对象很复杂,我想返回它们的汇总JSON视图.Customer对象也会发生类似的情况.我正在尝试用@JsonView注释实现它.

我想问一下,在容器对象类视图中扩展成员对象类的视图是否是这样做的方法,如果没有,是否有更清晰的方法来实现这个我不知道的.

上下文

在今天之前,我的错误印象是您可以使用多个视图注释您的控制器,并且相应地过滤生成的JSON表示.

@JsonView({Project.Extended.class, Proposal.Summary.class, Customer.Summary.class})
@Transactional
@RequestMapping(value="/project", method=RequestMethod.GET)
public @ResponseBody List<Project> findAll() {
    return projectDAO.findAll();    
}
Run Code Online (Sandbox Code Playgroud)

每个类都有自己的JsonView注释和接口,例如:

public class Customer {
    ...
    public interface Summary {}
    public interface Normal extends Summary {}
    public interface Extended extends Normal {}
}
Run Code Online (Sandbox Code Playgroud)

尽管如此,它只是阵列中的第一个视图被考虑在内.根据https://spring.io/blog/2014/12/02/latest-jackson-integration-improvements-in-spring

只能使用@JsonView批注指定一个类或接口,但您可以使用继承来表示JSON视图层次结构(如果字段是JSON视图的一部分,它也将是父视图的一部分).例如,此处理程序方法将序列化使用@JsonView(View.Summary.class)和@JsonView(View.SummaryWithRecipients.class)注释的字段:

以及http://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.html#mvc-ann-jsonview中的官方文档

要将它与@ResponseBody控制器方法或返回ResponseEntity的控制器方法一起使用,只需添加带有类参数的@JsonView批注,该类参数指定要使用的视图类或接口:

所以,我最终在容器对象的视图中扩展了成员的视图,就像这样

@Entity
public class Project {
    ...
    public static interface Extended extends Normal, Proposal.Extended {}
    public static interface Normal extends Summary, Customer.Normal {}
    public static interface Summary {}
} …
Run Code Online (Sandbox Code Playgroud)

java rest spring json spring-mvc

10
推荐指数
1
解决办法
6878
查看次数

标签 统计

hcl ×1

java ×1

json ×1

rest ×1

spring ×1

spring-mvc ×1

terraform ×1