Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

Support for passing custom values/services into Snippet classes

未关闭
#308 3 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

评估

难度
5/5
预计耗时
一周以上
新手友好度
25/100
Issue 类型
功能
描述清晰度
需要澄清
活跃度
停滞
技术栈
java, spring
领域
documentation

调研方向

Start by reviewing the Snippet and Operation APIs, then inspect the linked OperationAttributeHelper.java and JacksonResultHandlers.java examples to understand how per-request values currently flow through MockHttpServletRequest attributes. Define what public customization API would let Snippet classes receive request-specific services and values without relying on internal attributes; done means the requested use case no longer needs that hack.

由索引模型根据 Issue 内容生成。

描述

status: waiting-for-triage

In our auto-documentation extension https://github.com/ScaCap/spring-auto-restdocs we are trying to automate documentation as much as possible by introspecting code. For this we created extensions of Snippets which are dependent on some common services, such as jackson ObjectMapper, custom constraints & javadoc reader, having HandlerMethod available etc.

For passing these common components around, we are doing little hack by putting custom attributes inside MockHttpServletRequest, then inside the Snippet class getting them from Operation attributes:

    public static ObjectMapper getObjectMapper(Operation operation) {
        return (ObjectMapper) operation.getAttributes().get(ObjectMapper.class.getName());
    }

    public static void setObjectMapper(MockHttpServletRequest request, ObjectMapper objectMapper) {
        ((Map) request.getAttribute(ATTRIBUTE_NAME_CONFIGURATION))
                .put(ObjectMapper.class.getName(), objectMapper);
    }

https://github.com/ScaCap/spring-auto-restdocs/blob/master/spring-auto-restdocs-core/src/main/java/capital/scalable/restdocs/OperationAttributeHelper.java

We are setting it for every request using custom ResultHandler and alwaysDo mechanism.

        public void handle(MvcResult result) throws Exception {
            setHandlerMethod(result.getRequest(), (HandlerMethod) result.getHandler());
            setObjectMapper(result.getRequest(), objectMapper);
            ...

https://github.com/ScaCap/spring-auto-restdocs/blob/master/spring-auto-restdocs-core/src/main/java/capital/scalable/restdocs/jackson/JacksonResultHandlers.java

Because we need custom data for every request, such as request pattern and HandlerMethod, we cannot configure these things statically during Snippet class creation.

As this mechanism is basically a hack to inner workings of spring-restdocs (discovered how these attributes are passed around by digging in source code) and it's prone to change as it's internal api, it would be great if this framework offers customization of such things out of the box. Could be still using these attributes internally but having some convenient public api.

主要语言
Java
星标
1.2k
派生
733
PR 合并指标
30 天内没有已合并 PR

环境准备

  • 没有 Dockerfile 或 Docker Compose 文件
  • 没有 Pull Request 模板
  • 阅读贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

spring-projects/spring-restdocs 的其他 Issue

查看 spring-projects/spring-restdocs 的全部 Issue

相似的 Issue

更多 Java Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。