Неподдерживаемый тип носителя с Spring Boot и без сервера - PullRequest
0 голосов
/ 23 сентября 2019

Я создаю приложение с помощью Spring Boot (проект без сервера) для развертывания в AWS Lambda.У меня есть метод, который потребляет application / x-www-form-urlencoded .Когда я вызываю метод в localhost 415, появляются:

Тип контента 'application / x-www-form-urlencoded; charset = UTF-8' не поддерживается

Я присоединяюкод метода и конфигурация yaml, я думаю, что проблема заключается в конфигурации без сервера, поскольку этот метод работает в другом проекте (без сервера).

метод :

 @PostMapping(name = "/createpayment", consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
    public String createPayment(@RequestBody Payload payload) throws StripeException, IOException, MessagingException { 
         ...
 }

Yaml :

AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: AWS Serverless Sansaru Payments - com.sansarushop.payments::sansaru-payments
Globals:
  Api:
    EndpointConfiguration: REGIONAL


Resources:
  SansaruPaymentsFunction:
    Type: AWS::Serverless::Function
    Properties:
      Handler: com.example.payments.StreamLambdaHandler::handleRequest
      Runtime: java8
      CodeUri: target/example-payments-1.0-SNAPSHOT-lambda-package.zip
      MemorySize: 512
      Policies: AWSLambdaBasicExecutionRole
      Timeout: 30
      Events:
        GetResource:
          Type: Api
          Properties:
            Path: /{proxy+}
            Method: any
      Environment:
        Variables:
          SPRING_PROFILES_ACTIVE: 'prod'

Outputs:
  SansaruPaymentsApi:
    Description: URL for application
    Value: !Sub 'https://${ServerlessRestApi}.execute-api.${AWS::Region}.amazonaws.com/Prod/ping'
    Export:
      Name: ExamplePaymentsApi

Спасибо за помощь!

1 Ответ

0 голосов
/ 23 сентября 2019

Проблема связана с медиатайпом application / x-www-form-urlencoded, Spring Boot не понимает этого с RequestBody.Итак, если вы хотите использовать, удалите аннотацию @RequestBody из метода.

@PostMapping(name = "/createpayment", consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
public String createPayment(@RequestParam Map<String, String> params) throws StripeException, IOException, MessagingException { 
         ...
 }
...