私はSpring BootでREST APIを書いています。私のエンドポイントの1つが、JSON要求本体を消費するPOSTリクエストを処理します。一方、別のパラメータがURLに提供されます。なぜ406はパス変数とリクエストボディの両方でポストリクエストを送信します
@RequestMapping(
value = "/cycle?&visit={visitid}",
method = RequestMethod.POST,
consumes = "application/json",
produces = "text/plain")
@ResponseStatus(HttpStatus.CREATED)
public String persistCycleCount(@Valid @PathVariable Integer visitId, @Valid @RequestBody CycleCount cycleCount)
エンティティCycleCount
は次のようになります。 @Entity @Table(名前= "CYCLE_CNT_HIST")
public class CycleCount implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "CYCLE_CNT_ID")
private long id;
@NotNull
@Column(name = "DOOR_ID")
private String activeDoorId;
@Column(name = "VISIT_ID")
private long visitId;
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "SAMPLE_DTM")
private Date sampleDateTime;
@Column(name = "SAMPLE_TIMEZONE")
private int sampleTimeZone;
@NotNull
@Column(name = "SYS_CYCLE_CNT")
private int systemCycleCount;
@NotNull
@Column(name = "CTRLR_CYCLE_CNT")
private int controllerCycleCount;
テストは/cycle?&visit=1
にJSONを以下にリクエストを送信することにより、APIが、私は406を得ましたここで
{
"activeDoorId": "d002",
"controllerCycleCount": 15000,
"systemCycleCount": 78000
}
は、要求の闊歩出力です: ハンドラメソッドの最初の行にブレークポイントを設定してデバッグしようとすると、要求を送信した後でもその行にヒットしませんでした。 私はこれに似た他のエンドポイントを持っています。このエンドポイントはURLに変数を必要とせず、すべて機能します。なぜ私は406を手に入れますか?
'RequestParam'を使用すると動作します。 JSONを検証するための '@ Valid'アノテーションをすでに持っている場合、' BindingResult'には何が必要ですか? – ddd