cURL – Post JSON data to Spring REST

This article shows you how to use cURL command to POST JSON data to a Spring REST API.

1. Spring REST

A Simple Spring REST API to validate a login.

package com.mkyong.controller;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

public class LoginController {

    private final Logger logger = LoggerFactory.getLogger(LoginController.class);

    public ResponseEntity<?> login(@RequestBody Login login) {

        logger.debug("login : {}", login);

        //validate login here

        return new ResponseEntity("Successfully login", new HttpHeaders(), HttpStatus.OK);



package com.mkyong.controller;

public class Login {

    String username;
    String password;

    //getters and setters

2. cURL Post JSON

To test above REST API, you can use the cURL command to post a JSON data like this :

2.1 On Windows, you need to escape the double quotes


c:\> curl -H "Content-Type: application/json" -X POST -d {\"username\":\"mkyong\",\"password\":\"abc\"} http://localhost:8080/api/login/
Successfully login

2.2 For *nix or Mac OSX, add a single quote like this :


$ curl -H "Content-Type: application/json" -X POST -d '{"username":"mkyong","password":"abc"}' http://localhost:8080/api/login/
Successfully login

2.3 --help


$ curl --help

-d HTTP POST data
-H Pass custom header LINE to server
-X Specify request command to use

2.4 Display detail with curl -v


c:\> curl -v -H "Content-Type: application/json" -X POST -d {\"username\":\"mkyong\",\"password\":\"abc\"} http://localhost:8080/api/login/
Note: Unnecessary use of -X or --request, POST is already inferred.
* timeout on name lookup is not supported
*   Trying ::1...
* Connected to localhost (::1) port 8080 (#0)
> POST /api/login/ HTTP/1.1
> Host: localhost:8080
> User-Agent: curl/7.52.1
> Accept: */*
> Content-Type: application/json
> Content-Length: 38
* upload completely sent off: 38 out of 38 bytes
< HTTP/1.1 200
< Content-Type: text/plain;charset=UTF-8
< Content-Length: 18
< Date: Thu, 26 Jan 2017 08:00:03 GMT
Successfully login* Curl_http_done: called premature == 0
* Connection #0 to host localhost left intact


  1. Wikipedia – cURL
  2. Building REST services with Spring

About the Author

author image
Founder of, love Java and open source stuff. Follow him on Twitter. If you like my tutorials, consider make a donation to these charities.


2 Comment threads
0 Thread replies
Most reacted comment
Hottest comment thread
2 Comment authors
raghuTech Mint Recent comment authors
newest oldest most voted
Tech Mint
Tech Mint

Hi, i need some help, i have some curl command and json code, i want to execute that curl command to get result from url and display on web page? it this possible? if yes then how i can do this? please help sir:)


thanks a lot. it helped me a lot