SpringのMVCコントローラに次のリクエストを送信しようとすると、次の例外が発生します。 JSONのペイロードには '\'文字が含まれていますが、これは過去にJerseyと一緒に働いていました。私はいくつかの一般的なSpringブート設定が欠けているのだろうかと思います。Spring MVC ControllerはJSON.Stringify()によって生成されたJSONを処理できません。
curl -X GET --header 'Content-Type: application/json' --header 'Accept: application/json' -d '{ \
"phone": "+4489325678" \
}' 'http://localhost:8080/api/api/v1/auth/code'
{
"timestamp": 1495086719419,
"status": 400,
"error": "Bad Request",
"exception": "org.springframework.http.converter.HttpMessageNotReadableException",
"message": "Bad Request",
"path": "/tappter/api/v1/auth/code"
}
コントローラは、次のように構成されています。
@Controller
@RequestMapping(value = "/auth", consumes = "application/json", produces = "application/json")
@Api(value = "/auth", description = "Authentication", tags = "Authentication", produces = "application/json", consumes = "application/json")
public class AuthResourceImpl implements IAuthResource {
private final IAccessCodeService accessCodeService;
private final IUserAccountService userAccountService;
private final ITokenAuthenticationService tokenAuthenticationService;
@Autowired
public AuthResourceImpl(IAccessCodeService accessCodeService, IUserAccountService userAccountService,
ITokenAuthenticationService tokenAuthenticationService) {
this.accessCodeService = accessCodeService;
this.userAccountService = userAccountService;
this.tokenAuthenticationService = tokenAuthenticationService;
}
@Override
@ApiOperation("Request Access Code")
@ApiResponses(value = {
@ApiResponse(code = 201, message = "Access Code Sent", response = AccessCodeResponse.class),
@ApiResponse(code = 400, message = "Invalid Number", response = Errors.class),
@ApiResponse(code = 500, message = "Internal server error")
})
@RequestMapping(value = "/code", method = RequestMethod.GET)
public @ResponseBody
ResponseEntity<AccessCodeResponse> requestAccessCode(@Valid @RequestBody AccessCodeRequest request) {
AccessCode newAccessCode = accessCodeService.create(request.getPhone());
return new ResponseEntity<>(new AccessCodeResponse(newAccessCode.getAccessCode()), CREATED);
}
このリクエストを試すことができますか? 'curl -X GET --header '' Content-Type:application/json '--header' Accept:application/json '-d' {" phone ":" + 4489325678 "} '' http:// localhost:8080/api/api/v1/auth/code'' – Zico
なぜ '-d'を使って' GET'リクエストでデータを送信したいのですか? – rakesh
Ajaxリクエスト(例えば、 'JSON.stringify()')を使用しているときに同じエラーが発生します。 – john