Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

[Spring]: RequestBody required-handling

オープン
#1,432 コメント 1 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
3/5
見積もり時間
1〜2日
初心者へのやさしさ
62/100
issue の種類
バグ
明瞭さ
明確に書かれている
活発さ
活発
技術スタック
java, openapi, spring

調査の方向性

The bug is that the spring generator ignores requestBody.required: false and always emits @RequestBody with its default required=true. Start in the Spring server templates and find where the @RequestBody annotation is written for request bodies. Make it pass required from the spec, then check that a POST to /search with no body and no query parameter is accepted. Done when the generated controller compiles and both curl cases from the issue succeed.

索引モデルが issue の本文から書いたものです。

説明

Bug

Description

My goal is to have an endpoint to enable a quick search and an extended search. Using the quick search the endpoint only needs a query-param. Using the extended search a full search-body is required.

I was defining my openapi as follows:

/search:
    post:
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: "#/components/schemas/SearchCriterion"
      parameters:
        - in: query
          name: value
          required: false
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/SearchResult"

I was expecting to be able to send curl requests like:

  • curl -X POST
    'http://localhost/search'
    -H 'Content-Type: application/json'
    -d '[{"type":"NAME","value":"Dummy"}]'
  • curl -i -X POST
    'http://localhost/search?value=something'
    -H 'Content-Type: application/json'

But only the first request returned any data. The second request only resulted in a 404.

After shortly analysing the problem I found that the required-property is not handed to the @RequestBody Spring annotation. As the annotation uses true as default for the required attribute, I need to hand the body for every request.

This behaviour should be altered to correctly pass the required-property to the code.

Version

We are using [email protected] (which uses [email protected]) but the current main is also not passing the required-property.

Language / Generator Affected

  • spring (i haven't checked any other generators as this should be specific for this generator)

OpenAPI/Swagger Spec

/search:
    post:
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: "#/components/schemas/SearchCriterion"
      parameters:
        - in: query
          name: value
          required: false
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/SearchResult"

Environment

OS: Windows 11

Java Version: temurin-21.0.6+7.0.LTS

Build Tool: Maven

swagger-codegen-generators Version: 1.0.54

Checklist

  • [/] I have searched the existing issues to avoid duplicates.
  • [/] I have included a minimal reproducible spec or configuration.
  • [/] I have clearly described the steps to reproduce the issue.
  • [/] I have specified which generator or template is affected.
主要言語
Mustache
スター
299
フォーク
439
PR マージ指標
30日以内にマージされた PR はありません

環境構築

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

swagger-api/swagger-codegen-generators のほかの issue

swagger-api/swagger-codegen-generators の issue をすべて見る

似ている issue

Backend & API Design の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。