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

Serialize and Deserialize JSON data with C#

This post is about example for serialize and deserialize json data with C#. This example using Newtonsoft.Json to be a library to work with json data. You can add Newtonsoft.Json by download from  https://www.newtonsoft.com/json  or using Nuget to add it into your project. In this example is Bill object that hold billing data about Car object. Serialize Object to String Below is example code to serialize object to json string. At line 39 is code to convert object into json string with beautiful json format. 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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; namespace JSON { class JSonExample { static void Main( string [] args) { List<Car> cars = new List<Car>(); float to...

Laravel 5.6.34 Released

We’ve had an exciting week in Laravel-land, with the launch of Laravel Nova on Wednesday! Tuesday’s release of Laravel 5.6.34 released quietly before Nova, bringing a few changes and a URL validation compatibility fix for PHP 7.3. First up, the whereRowValues changes to properly wrap columns: $builder = DB::table('table')->whereRowValues(['column1', 'column2'], '=', ['foo', 'bar']); dd($builder->toSql()); // expected: select * from "table" where ("column1", "column2") = (?, ?) // actual: select * from "table" where (column1, column2) = (?, ?) Next, the default mail template’s copyright phrase (i.e., “All rights reserved.”) is localizable. Here’s the implementation: @lang('All rights reserved.') The last change was updating the behavior of the EventFake to dispatch non-faked events. The previous functionality was not to execute any event listeners. Now, al...

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...