Httpメディアタイプ異常はサポートされていません:コンテンツタイプtext/plain

3656 ワード

今日postmanを使用してリクエストを送信するときに以下のエラーが発生しました.
    "status": 415,
    "error": "Unsupported Media Type",
    "message": "Content type 'text/plain;charset=UTF-8' not supported",
    "trace": "org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'text/plain;charset=UTF-8' not supported

リクエスト送信時にRequestbodyでJSONシリアルを送信しています
{"serial":"  "}

不支持Http媒体类型异常:内容类型text/plain_第1张图片デフォルトはTextですが、JSONデータを送信した場合はJSONを選択してください.そうしないと、私のタイトルのtext/plainタイプがサポートされていないという異常が発生します.
AJAX送信要求にJSON形式データを追加する場合はcontentTypeを設定する必要があります
$.ajax({url:‘xxx’,type:‘post’,contentType:‘アプリケーション/json;charset=UTF-8’,//主にサーバに送信するフォーマットdata:{//data:サーバに送信するデータ「serial」:[ハハ]},dataType:‘json’,//dataType:サーバが返すデータ型success:function(data){});
バックグラウンドがオブジェクトを受信している場合、たとえば私がバックグラウンドで受信したオブジェクトがPaymentです.
@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class Payment implements Serializable {
    private Long id;
    private String serial;
}

不支持Http媒体类型异常:内容类型text/plain_第2张图片私のhttpリクエストの送信で、Paymentの属性serialを1つだけ送った場合は、制御層のパラメータに@RequestBodyを追加する必要があります.
@RequestBodyの役割は、json形式の文字列を受け入れることであり、必ず文字列である.
@RequestBodyの後にクラスがある場合、json文字列のkeyに基づいて対応するエンティティクラスの属性が一致し、jsonのそのkeyに対応する値がエンティティクラスの対応する属性のタイプ要求に合致(または変換可能)する場合、エンティティクラスのsetterメソッドが呼び出され、その属性に値が割り当てられます.(フロントから送られてきたJSONデータに基づいてバックグラウンドのパラメータオブジェクトに組み込まれる.)
@RequestBodyを追加しないと、paymentオブジェクトの属性に値がありません.
@RequestBodyの後ろがオブジェクトでない場合は@RequestBodyを付けなくても良いです.