Java Spring Controller 处理一个荒谬的 url

标签 java controller

好吧,我正在使用名为 Thrive cart 的支付服务,我正在为我正在创建的成员(member)网站执行此操作。当用户付款后,我希望他们被重定向到一个 URL,我可以在其中使用该数据来更新当前用户信息。

在参数中发送的数据是疯狂的:

http://localhost:5000/user/welcome?thrivecart%5Baccount_id%5D=3196&thrivecart%5Baccount_name%5D=testacount&thrivecart%5Bcustomer%5D%5Bemail%5D=testname8%40gmail.com&thrivecart%5Bcustomer%5D%5Baddress%5D%5Bcountry%5D=GB&thrivecart%5Bcustomer%5D%5Baddress%5D%5Bzip%5D=pe303wu&thrivecart%5Border%5D%5B0%5D%5Bt%5D=product&thrivecart%5Border%5D%5B0%5D%5Bid%5D=6&thrivecart%5Border%5D%5B0%5D%5Bn%5D=Monthly+membership&thrivecart%5Border%5D%5B0%5D%5Bp%5D=799&thrivecart%5Border%5D%5B0%5D%5Bq%5D=1&thrivecart%5Border%5D%5B0%5D%5Bpo%5D=60120&thrivecart%5Border%5D%5B1%5D%5Bt%5D=product&thrivecart%5Border%5D%5B1%5D%5Bid%5D=6&thrivecart%5Border%5D%5B1%5D%5Bn%5D=Monthly+membership&thrivecart%5Border%5D%5B1%5D%5Bp%5D=799&thrivecart%5Border%5D%5B1%5D%5Bq%5D=1&thrivecart%5Border%5D%5B1%5D%5Bpo%5D=60120&thrivecart%5Border_currency%5D=GBP&thrivecart%5Border_id%5D=1041278&thrivecart%5Border_tax%5D=0.2&thrivecart%5Border_tax_id%5D=gb&thrivecart%5Border_total%5D=799&thrivecart%5Bpayment_processor%5D=paypal&thrivecart%5Bproduct_id%5D=6&thrivecart%5Bpurchases%5D%5B0%5D=6&thrivecart%5Bpurchases%5D%5B1%5D=6&thrivecart_hash=a5b711d2288b4cb587511811bc0a3473

到目前为止,我已经设置了一个没有被击中的简单 Controller :

@RestController
@RequestMapping("/user")
public class UserController {
    @RequestMapping(value = "/welcome", method = RequestMethod.POST)
    public void welcomeMember(@PathVariable String data) {

        System.out.println(data);
    }   
}

我该如何处理这样疯狂的数据?我必须指定每个路径参数吗?

最佳答案

首先,您似乎获取的不是路径元素,而是请求参数,因此您需要 @RequestParam 注解来获取值。

由于请求参数太多,我还建议只采用一个参数,即 Map<String, String> 。该映射将包含所有参数作为键/值对,例如:

  • 键:“thrivecart[account_id]”
  • 值:“3196”

如果您不确定收到的是 POST 还是 GET 请求,您还可以添加第二个参数来接收 HttpMethod .

将 RestController 更改为:

@RestController
@RequestMapping("/user")
public class UserController {
    @RequestMapping(value = "/welcome")
    public void welcomeMember(@RequestParam Map<String, String> data, HttpMethod method) {
        System.out.println(method);
        System.out.println(data);
    }   
}

关于Java Spring Controller 处理一个荒谬的 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53022110/

相关文章:

java - 如何在spring的mongo模板中编写这个聚合查询

Java计算字节数组位数的方法

javascript - AngularJS、TypeScript、RequireJS 通用基础 Controller

iphone - 从另一个 View Controller 与另一个 View Controller 交互

javascript - AngularJS ng-show 图标在排序后无法正常工作

java - 如何在 android studio 中对属于不同 Activity 的两个不同列表进行一次搜索?

java - 数组应该比 ArrayList 快这么多吗?

java - 揭秘安卓构建过程

php - 表单 - 从 Controller 传递数组到 View - PHP - Laravel

grails - 通过具有部分下载支持的 Controller 提供文件