Skip to main content

How to create controller to support JSON in Spring Boot

You can create your controller to support application/json request in many way. And if your request is not match with your controller that request will be fail.

Controller to support JSON request and HEADER variables.


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
package com.myexample;

import java.util.HashMap;
import java.util.Map;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;


@RestController
public class RecognizedReceiver {
 private static final Logger logger = LoggerFactory.getLogger(RecognizedReceiver.class);

    
 @RequestMapping(
      value = "/MyController", method = RequestMethod.POST)
 public HashMap<String, Object> MyController(@RequestHeader(value="USER-AGENT") long userAgent, @RequestBody Map<String, Object> payload) {
  
  HashMap<String, Object> result = new HashMap<>();
  result.put("result", processResult);
  return result;
  
 }
}

Explaination
Line 21-22: Declare controller mapping to URL and receive only POST method (You can change as your want)
Line 23: Declare controller's method to support URL.

In this example header USER-AGENT will be send to variable userAgent and all json request data will be hold by variable payload. If you want to get your custom header you can change value to your variable as you want or add more parameter in method declaration. In example below will be receive only json request data without header variable.



 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
package com.myexample;

import java.util.HashMap;
import java.util.Map;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;


@RestController
public class RecognizedReceiver {
 private static final Logger logger = LoggerFactory.getLogger(RecognizedReceiver.class);

    
 @RequestMapping(
      value = "/MyController", method = RequestMethod.POST)
 public HashMap<String, Object> MyController(@RequestBody Map<String, Object> payload) {
  
  HashMap<String, Object> result = new HashMap<>();
  result.put("result", processResult);
  return result;
  
 }
}

Look at line 23 again. I just removed @RequestHeader from method's parameters.


Comments

Popular posts from this blog

CURL SSL error in WAMP

I facing problem about certificate error when I using curl to request HTTPS domain. I find cause of problem is there is no certificate configuration in PHP. Below is how to solve my problem. Here is sample of error: * About to connect() to notify-api.line.me port 443 (#0) * Trying {IP Address}... * connected * Connected to notify-api.line.me ({IP Address}) port 443 (#0) * SSL certificate problem, verify that the CA cert is OK. Details: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed * Closing connection #0 Step to solve this problem Download  Certificate Bundle Extract and put PEM file to your web server folder or other folder. Enable mod_ssl in Apache and php_openssl.dll in php.ini Add configuration into php.ini curl.cainfo="C:/wamp/cacert.pem" openssl.cafile="C:/wamp/cacert.pem" Restart Apache Service

Bootstrap 4.1.3

Hot on the heels of v4.1.2, we’re shipping another patch release to address an issue with our browserslist config, fix some CSS bugs, make JavaScript plugins UMD ready, and improve form control rendering. Up next will be v4.2, our second minor release where we add some new features. But first, here are the highlights for v4.1.3. Pay attention to the change to  .form-control s which adds a new fixed  height . Fixed:  Moved the browserslist config from our  package.json  to a separate file to avoid unintended inherited browser settings across npm projects. Fixed:  Removed the  :not(:root)  selector from our  svg  Reboot styles, resolving an issue that caused all inline SVGs ignore  vertical-align  styles via single class due to higher specificity. Fixed:  Buttons in custom file inputs are once again clickable when focused. Improved:  Bootstrap’s plugins can now be imported separately in any contexts because they...

Install Spring Boot application as a Windows services.

I using  WinSW  to be wrapper for Spring Boot application to run as a Windows service (following section 61.3 of Spring Boot document). There few easy step to setup. Download WinSW binary distribution from website  https://github.com/kohsuke/winsw/releases Copy WinSW.exe into Spring Boot application folder (ex: my file is WinSW.Net4.exe) Rename your WinSW.exe to same as your jar file (for easy to remember). Create XML file name same as jar file. This file is using for configuration of Windows services. Put configuration for services wrapper in your xml file. 1 2 3 4 5 6 7 8 9 <?xml version="1.0" encoding="UTF-8"?> <service> <id>my-application-0.0.1</id> <name>my-application-0.0.1</name> <description>My Exaple Spring Boot Services</description> <executable>java</executable> <arguments>-jar -Xmx1024M -Xms128M "my-application-0.0.1.jar"</arguments> <logmode>rotate...